//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2014, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************

/** @file ViewSelLog.h
    Header file for ViewSelLog modular part

**/

#ifndef _VIEW_SEL_LOG_H_
#define _VIEW_SEL_LOG_H_

//----------------------------------------------------------------------

#include <Token.h>

#include <AmiDxeLib.h>
#include "ServerMgmtSetupVariable.h"
#include "Setup.h"
#include <ServerMgmtSetup.h>

#include <Include/IpmiNetFnStorageDefinitions.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/PrintLib.h>
#include <Library/HiiLib.h>
#include <Library/IpmiInterfaceLib.h>

//----------------------------------------------------------------------

//
// Macro definitions
//
#define STRING_BUFFER_LENGTH        4000
#define MAX_TOKENS_TO_SAVE          100
#define NULL_STRING_REF             0
#define RESERVED_UNKNOWN_STRING     L"Reserved or Unknown"

//
// Size of ErrorManager variable. Max value should be 64KB.
//
#define  MAX_ERROR_MANAGER_SIZE     0xFFFF

//
// When Serial Redirection is disabled, maximum 7 bytes can be displayed.
// When Serial Redirection is enabled, only 6 bytes can be displayed.
// So set max value to 0x06 by considering Redirection enable condition.
//
//TH0161 #define MAX_HEX_VALUES_TO_PRINT_PER_LINE   0x06
#define MAX_HEX_VALUES_TO_PRINT_PER_LINE   0x08 //TH0161

//TH0170>>>
//
// ME LUN  strings.
//
#define ME_LUN_STRING              L"ME - LUN #"
//TH0170<<<
//
// Flag definitions for ViewSelLogFlag variable
//
typedef enum _VIEW_SEL_LOG_FLAG {
  PrintColumnTitleString = 1,
  PrintNoProtocolFoundError,
  PrintNoRecordsFoundString,
  PrintViewMoreSelLogString
} VIEW_SEL_LOG_FLAG;

#pragma pack(1)
typedef struct _SEL_SENSOR_DETAILS_TOKEN_LOOKUP_TABLE {
  UINT8             SensorType;
  UINT32            TimeStamp;
  STRING_REF        Token;
} SEL_SENSOR_DETAILS_TOKEN_LOOKUP_TABLE;

typedef struct _SEL_RECORD_DESC_TOKEN_LOOKUP_TABLE {
  EFI_SEL_RECORD_DATA   SelRecordData;
  STRING_REF            Token;
} SEL_RECORD_DESC_TOKEN_LOOKUP_TABLE;

typedef struct {
  UINT8         Value;
  EFI_STRING    DescString;
} VALUE_TO_DESC_STRING;

typedef struct {
  UINT8     SensorSpecOffset;
  UINT8     Mask2;
  UINT8     Or2;
  UINT8     Value2;
  UINT8     Mask3;
  UINT8     Or3;
  UINT8     Value3;
  CHAR16*   DescString;
} SENSOR_OFFSET_STRING_TABLE;

typedef struct {
  UINT8                         SensorType;
  UINTN                         SizeOfTable;
  SENSOR_OFFSET_STRING_TABLE    *SensorOffsetStringTable;
} SENSOR_TYPE_VALUE_TO_DESC_STRING;

BOOLEAN ValidateRecordType (
  IN UINT8 RecordId
  );

//TH0171>>>
/* TH0171A
#define BIOS_CORE_VTD_SENSOR_NUM                     0x04 
#define BIOS_CBO_SENSOR_NUM                          0x05 
#define BIOS_QPI_SENSOR_NUM                          0x06 
#define BIOS_PCI_SENSOR_NUM                          0x07 
#define BIOS_MEM_SENSOR_NUM                          0x08 
#define BIOS_POST_SENSOR_NUM                         0x09 
TH0171A */
//TH0171A>>>
#define BIOS_CORE_VTD_SENSOR_NUM                     0x74 
#define BIOS_CBO_SENSOR_NUM                          0x75 
#define BIOS_QPI_SENSOR_NUM                          0x76 
#define BIOS_PCI_SENSOR_NUM                          0x77 
#define BIOS_MEM_SENSOR_NUM                          0x78 
#define BIOS_POST_SENSOR_NUM                         0x79 
//TH0171A<<<
//TH0171<<<
//
// Sensor Number Look up table
//
/* TH0169
//ZA0024 >>>
#if OEM_SEL_DEFINITION
//TH0080>>>> 
static VALUE_TO_DESC_STRING	gSensorNumTable[] = {
//TH0080A>>>> Table for Thor-Sensor Data Record List of BMC Spec v0.8 define. //TH0080B
{0x06,L"Chassis intruder"},
{0x0A,L"SYS_PWR_Monitor"},
{0x0B,L"System Event"},
{0x0C,L"SEL State"},
{0x0D,L"Watchdog"},
{0x1A,L"CPU0 THERMTRIP"},
{0x1B,L"CPU1 THERMATRIP"},	//TH0080B
{0x40,L"SYS_V12"},
{0x41,L"SYS_V5"},
{0x42,L"SYS_V3.3"},
{0x44,L"SYS_V3.3_AUX"},
{0x49,L"PVDDQ_AB"},
{0x4A,L"PVDDQ_CD"},
{0x4B,L"PVDDQ_EF"},
{0x4C,L"PVDDQ_GH"}, //TH0080B
{0x4E,L"PVCCIN_CPU0"},
{0x4F,L"PVCCIN_CPU1"},
{0x57,L"SYS_V12_AUX"},
{0x58,L"P1V0_AUX_SENSOR"},
{0x59,L"SYS_V5_AUX"},
{0x5A,L"P1V05_PCH_SENSOR"},
{0x5B,L"P1V05_STBY_PCH"},
{0x61,L"CPU_0_DTS_TEMP"},
{0x62,L"CPU_1_DTS_TEMP"},
{0x64,L"SYS_AMB__TEMP"},
{0x67,L"PCIE_AMB_TEMP"},
{0x6B,L"PCH"},
{0x6D,L"DIMM_TEMP"},
{0x6E,L"DIMM1_TEMP"},
{0x93,L"LOM_Temp"},
{0x94,L"SAS_MEZZ_TEMP"},
{0x95,L"10G_Temp"},
{0xA7,L"SYS_Fan_1_F"},
{0xA8,L"SYS_Fan_1_R"},
{0xA9,L"SYS_Fan_2_F"},
{0xAA,L"SYS_Fan_2_R"},
{0xAB,L"SYS_Fan_3_F"},
{0xAC,L"SYS_Fan_3_R"},
{0xAD,L"SYS_Fan_4_F"},
{0xAE,L"SYS_Fan_4_R"},
{0xAF,L"SYS_Fan_5_F"},
{0xB0,L"SYS_Fan_5_R"},
{0xB1,L"SYS_Fan_6_F"},
{0xB2,L"SYS_Fan_6_R"},
{0xC4,L"PSU_Temp_1"},
{0xD4,L"PSU_0_POWER_IN"},	//TH0080B
{0xD5,L"PSU_1_POWER_IN"},	//TH0080B
//TH0080B>>>>
{0xCD,L"PSU_0_STATUS"},
{0xDA,L"PSU_1_STATUS"},
{0x19,L"NMI State"},
{0xD4,L"PSU_0_CUR_OUT "},
{0xE1,L"PSU_1_CUR_OUT"},
{0xD5,L"PSU_0_VOL_OUT"},
{0xE2,L"PSU_1_VOL_OUT"},
{0xD1,L"PSU_0_Temp"},
{0xD2,L"PSU_1_Temp"}
//TH0080B<<<<
//TH0080A<<<<
};

//TH0080<<<<
TH0169 */

//TH0169>>>
#if OEM_SENSOR_NUM_DEFINITION_FOR_ALI_1218

static VALUE_TO_DESC_STRING	gSensorNumTable[] = {
//Table for Thor-Sensor Data Record List of Ali BMC Spec v0.3 define.
{0x01,L"FAN1_RPM"},
{0x02,L"FAN2_RPM"},
{0x03,L"FAN3_RPM"},
{0x04,L"FAN4_RPM"},
{0x05,L"FAN5_RPM"},
{0x06,L"FAN6_RPM"},
{0x07,L"FAN7_RPM"},
{0x08,L"FAN8_RPM"},
{0x10,L"SYS_V12"},
{0x11,L"SYS_V5"},
{0x12,L"SYS_V3.3"},
{0x13,L"CPU0_VCORE"},
{0x14,L"CPU1_VCORE"},
{0x15,L"CPU0_DDR_VDD1"},
{0x17,L"CPU0_DDR_VDD2"},
{0x16,L"CPU1_DDR_VDD1"},
{0x18,L"CPU1_DDR_VDD2"},
{0x20,L"Inlet_Temp"},
{0x21,L"Outlet_Temp"},
{0x2C,L"CPU0_DTS_Temp"},
{0x2D,L"CPU1_DTS_Temp"},
{0x22,L"CPU0_Temp"},
{0x23,L"CPU0_Margin_Temp"},
{0x24,L"CPU1 _Temp"},
{0x25,L"CPU1_Margin_Temp"},
{0x26,L"CPU0_VR_Temp"},
{0x27,L"CPU1_VR_Temp"},
{0x29,L"PCH_Temp"},
{0x2A,L"DIMMG0_Temp"},
{0x2B,L"DIMMG1_Temp"},
{0x2E,L"SAS_MEZZ_Temp"},
{0x2F,L"PSU_Inlet_Temp"},
{0x31,L"PS1_Status"},
{0x32,L"PS2_Status"},
{0x33,L"PS3_Status"},
{0x34,L"PS4_Status"},
//TH0171A>>>
{0x74, L"Core&VT-d"},
{0x75, L"Cbo"},
{0x76, L"Qpi"},
{0x77, L"PCI"},
{0x78, L"Memory"},
{0x79, L"BIOS POST"},
//TH0171A<<<
{0x9B,L"PS1_Power"},
{0x9C,L"PS2_Power"},
{0x9D,L"PS3_Power"},
{0x9E,L"PS4_Power"},
{0x9F,L"Total_Power"},
{0xC0,L"BMC_Post_Up"},
{0xC1,L"ACPI_PWR_Status"},
{0xC2,L"Button_Pressed"},
{0xC3,L"SEL_State"},
{0xC4,L"IPMI_Watchdog"},
//STS002003- {0x9F,L"IPMI_Watchdog"}, //STS002002+
{0xC5,L"CPU0_Status"},
{0xC6,L"CPU1_Status"},
{0xC7,L"PROC_Hot"},
{0xC8,L"CPU_CATERR"},
{0xC9,L"CPU0_VR_FAULT"},
{0xCF,L"CPU1_VR_FAULT"},
{0xCA,L"Memory_Hot_AB"},
{0xCC,L"Memory_Hot_CD"},
{0xCD,L"Memory_Hot_EF"},
{0xCE,L"Memory_Hot_GH"},
{0xCB,L"Chassis_Control"},
{0x3C,L"PCIE_AMB_Temp"},
{0xE0,L"BIOS_Boot_Up"},
{0xE1,L"BIOS_POST_Status"},
{0xE2,L"Memory_Status"},

};

#elif OEM_SENSOR_NUM_DEFINITION_FOR_ALI_806

static VALUE_TO_DESC_STRING	gSensorNumTable[] = {
//Table for Thor-Sensor Data Record List of Ali BMC Spec v0.3 define.
{0x02,L"FAN1_RPM_F"},
{0x01,L"FAN1_RPM_R"},
{0x04,L"FAN2_RPM_F"},
{0x03,L"FAN2_RPM_R"},
{0x06,L"FAN3_RPM_F"},
{0x05,L"FAN3_RPM_R"},
{0x08,L"FAN4_RPM_F"},
{0x07,L"FAN4_RPM_R"},
{0x09,L"FAN5_RPM_F"},
{0x0B,L"FAN6_RPM_R"},
{0x0A,L"FAN5_RPM_F"},
{0x10,L"SYS_V12"},
{0x11,L"SYS_V5"},
{0x12,L"SYS_V3.3"},
{0x13,L"CPU0_VCORE"},
{0x14,L"CPU1_VCORE"},
{0x15,L"CPU0_DDR_VDD1"},
{0x17,L"CPU0_DDR_VDD2"},
{0x16,L"CPU1_DDR_VDD1"},
{0x18,L"CPU1_DDR_VDD2"},
{0x20,L"Inlet_Temp"},
{0x21,L"Outlet_Temp"},
{0x2C,L"CPU0_DTS_Temp"},
{0x2D,L"CPU1_DTS_Temp"},
{0x22,L"CPU0_Temp"},
{0x23,L"CPU0_Margin_Temp"},
{0x24,L"CPU1 _Temp"},
{0x25,L"CPU1_Margin_Temp"},
{0x26,L"CPU0_VR_Temp"},
{0x27,L"CPU1_VR_Temp"},
{0x29,L"PCH_Temp"},
{0x2A,L"DIMMG0_Temp"},
{0x2B,L"DIMMG1_Temp"},
{0x2E,L"SAS_MEZZ_Temp"},
{0x2F,L"PSU_Inlet_Temp"},
{0x31,L"PS1_Status"},
{0x32,L"PS2_Status"},
{0x33,L"PS3_Status"},
{0x34,L"PS4_Status"},
//TH0171A>>>
{0x74, L"Core&VT-d"},
{0x75, L"Cbo"},
{0x76, L"Qpi"},
{0x77, L"PCI"},
{0x78, L"Memory"},
{0x79, L"BIOS POST"},
//TH0171A<<<
{0x9B,L"PS1_Power"},
{0x9C,L"PS2_Power"},
{0x9D,L"PS3_Power"},
{0x9E,L"PS4_Power"},
{0x9F,L"Total_Power"},
{0xC0,L"BMC_Post_Up"},
{0xC1,L"ACPI_PWR_Status"},
{0xC2,L"Button_Pressed"},
{0xC3,L"SEL_State"},
{0xC4,L"IPMI_Watchdog"},
//STS002003- {0x9F,L"IPMI_Watchdog"}, //STS002002+
{0xC5,L"CPU0_Status"},
{0xC6,L"CPU1_Status"},
{0xC7,L"PROC_Hot"},
{0xC8,L"CPU_CATERR"},
{0xC9,L"CPU0_VR_FAULT"},
{0xCF,L"CPU1_VR_FAULT"},
{0xCA,L"Memory_Hot_AB"},
{0xCC,L"Memory_Hot_CD"},
{0xCD,L"Memory_Hot_EF"},
{0xCE,L"Memory_Hot_GH"},
{0xCB,L"Chassis_Control"},
{0x3C,L"PCIE_AMB_Temp"},
{0xE0,L"BIOS_Boot_Up"},
{0xE1,L"BIOS_POST_Status"},
{0xE2,L"Memory_Status"},

};

#elif OEM_SENSOR_NUM_DEFINITION_FOR_BAIDU_1218

static VALUE_TO_DESC_STRING	gSensorNumTable[] = {
//Table for Thor-Sensor Data Record List of Ali BMC Spec v0.6 define.
{0x02,L"FAN1_RPM_F"},
{0x01,L"FAN1_RPM_R"},
{0x04,L"FAN2_RPM_F"},
{0x03,L"FAN2_RPM_R"},
{0x06,L"FAN3_RPM_F"},
{0x05,L"FAN3_RPM_R"},
{0x08,L"FAN4_RPM_F"},
{0x07,L"FAN4_RPM_R"},
{0x0A,L"FAN5_RPM_F"},
{0x09,L"FAN5_RPM_R"},
{0x0C,L"FAN6_RPM_F"},
{0x0B,L"FAN6_RPM_R"},
{0x13,L"CPU0_VCORE"},
{0x14,L"CPU1_VCORE"},
{0x15,L"CPU0_DDR_VDD1"},
{0x17,L"CPU0_DDR_VDD2"},
{0x16,L"CPU1_DDR_VDD1"},
{0x18,L"CPU1_DDR_VDD2"},
{0x1B,L"SYS_V3.3_AUX"},
{0x12,L"SYS_V3.3"},
{0x1A,L"SYS_V5_AUX"},
{0x11,L"SYS_V5"},
{0x19,L"SYS_V12_AUX"},
{0x10,L"SYS_V12"},
{0x1C,L"P1V0_AUX_SENSOR"},
{0x1D,L"P1V05_PCH_SENSOR"},
{0x1E,L"P1V05_STBY_PCH"},
{0xC5,L"CPU0_Status"},
{0xC6,L"CPU1_Status"},
{0xC7,L"PROC_Hot"},
{0xC8,L"CPU_CATERR"},
{0xC9,L"CPU0_VR_FAULT"},
{0xCF,L"CPU1_VR_FAULT"},
{0x2C,L"CPU0_DTS_Temp"},
{0x2D,L"CPU1_DTS_Temp"},
{0x22,L"CPU0_Temp"},
{0x23,L"CPU0_Margin_Temp"},
{0x24,L"CPU1 _Temp"},
{0x25,L"CPU1_Margin_Temp"},
{0x26,L"CPU0_VR_Temp"},
{0x27,L"CPU1_VR_Temp"},
{0x29,L"PCH_Temp"},
{0x20,L"Inlet_Temp"},
{0x3C,L"Outlet_Temp"},
{0x3D,L"PSU_Inlet_Temp"},
{0x3E,L"SAS_MEZZ_TEMP"},
{0x3B,L"LOM_Temp"},

/*DJH002020--
{0x2A,L"DIMMG0_Temp"},
{0x2B,L"DIMMG1_Temp"},
{0x40,L"DIMM_A1_TEMP"},
{0x41,L"DIMM_A2_TEMP"},
{0x42,L"DIMM_B1_TEMP"},
{0x43,L"DIMM_B2_TEMP"},
{0x44,L"DIMM_C1_TEMP"},
{0x45,L"DIMM_C2_TEMP"},
{0x46,L"DIMM_D1_TEMP"},
{0x47,L"DIMM_D2_TEMP"},
{0x48,L"DIMM_E1_TEMP"},
{0x49,L"DIMM_E2_TEMP"},
{0x4A,L"DIMM_F1_TEMP"},
{0x4B,L"DIMM_F2_TEMP"},
{0x4C,L"DIMM_G1_TEMP"},
{0x4D,L"DIMM_G2_TEMP"},
{0x4E,L"DIMM_H1_TEMP"},
{0x4F,L"DIMM_H2_TEMP"},
//DJH002020--
*/
//DJH002019++>>
{0x47,L"CPU0_Status"},
{0x48,L"CPU1_Status"},

//DJH00035-- /*DJH002019--
{0x60,L"DIMM_A1_Status"},
{0x61,L"DIMM_A2_Status"},
{0x62,L"DIMM_B1_Status"},
{0x63,L"DIMM_B2_Status"},
{0x64,L"DIMM_C1_Status"},
{0x65,L"DIMM_C2_Status"},
{0x66,L"DIMM_D1_Status"},
{0x67,L"DIMM_D2_Status"},
{0x68,L"DIMM_E1_Status"},
{0x69,L"DIMM_E2_Status"},
{0x6A,L"DIMM_F1_Status"},
{0x6B,L"DIMM_F2_Status"},
{0x6C,L"DIMM_G1_Status"},
{0x6D,L"DIMM_G2_Status"},
{0x6E,L"DIMM_H1_Status"},
{0x6F,L"DIMM_H2_Status"},
//DJH002019--
//DJH00035-- */
/* //DJH00035++ //DJH002019++>>
{0x50,L"DIMM_A1_Status"},
{0x51,L"DIMM_A2_Status"},
{0x52,L"DIMM_B1_Status"},
{0x53,L"DIMM_B2_Status"},
{0x54,L"DIMM_C1_Status"},
{0x55,L"DIMM_C2_Status"},
{0x56,L"DIMM_D1_Status"},
{0x57,L"DIMM_D2_Status"},
{0x58,L"DIMM_E1_Status"},
{0x59,L"DIMM_E2_Status"},
{0x5A,L"DIMM_F1_Status"},
{0x5B,L"DIMM_F2_Status"},
{0x5C,L"DIMM_G1_Status"},
{0x5D,L"DIMM_G2_Status"},
{0x5E,L"DIMM_H1_Status"},
{0x5F,L"DIMM_H2_Status"},
//DJH002019++<<
 */ //DJH002025++
//TH0171A>>>
{0x74, L"Core&VT-d"},
{0x75, L"Cbo"},
{0x76, L"Qpi"},
{0x77, L"PCI"},
{0x78, L"Memory"},
{0x79, L"BIOS POST"},
//TH0171A<<<
{0xCA,L"Memory_Hot_AB"},
{0xCC,L"Memory_Hot_CD"},
{0xCD,L"Memory_Hot_EF"},
{0xCE,L"Memory_Hot_GH"},
{0x31,L"PS1_Status"},
{0x32,L"PS2_Status"},
{0xDB,L"PSU1_Temp"},
{0xDC,L"PSU2_Temp"},
{0xD1,L"PSU1_CUR_IN"},
{0xDD,L"PSU1_CUR_OUT"},
{0xD2,L"PSU1_CUR_IN"},
{0xDE,L"PSU2_CUR_OUT"},
{0xD3,L"PSU1_VOL_IN"},
{0xD4,L"PSU1_VOL_OUT"},
{0xD5,L"PSU2_VOL_IN"},
{0xD6,L"PSU2_VOL_OUT"},
{0xD7,L"PSU1_POWER_IN"},
{0xD8,L"PSU1_POWER_OUT"},
{0xD9,L"PSU2_POWER_IN"},
{0xDA,L"PSU2_POWER_OUT"},
{0x9F,L"Total_Power"},
{0xE7,L"HDD_12V_Power"},
{0xE8,L"HDD_5V_Power"},
{0xE6,L"FAN_Consumption"},
{0xD5,L"Chassis_Control"},
{0x53,L"SYS_PWR_Monitor"},
{0xC4,L"IPMI_Watchdog"},
//STS002003- {0x9F,L"IPMI_Watchdog"}, //STS002002+
{0xC3,L"SEL State"},
{0x51,L"System Event"},
{0x52,L"Chassis Intruder"},
{0x50,L"NMI State"},
{0xC2,L"Button_Pressed"},
{0xE1,L"BIOS_POST_Status"}, //TH0179++

};

#elif OEM_SENSOR_NUM_DEFINITION_FOR_BAIDU_806

static VALUE_TO_DESC_STRING	gSensorNumTable[] = {
//Table for Thor-Sensor Data Record List of Baidu BMC Spec define.
//JPG002006+START
{0x13,L"CPU0_VCORE"},
{0x14,L"CPU1_VCORE"},
{0x15,L"CPU0_DDR_VDD"},
//JPG002006A-{0x17,L"CPU0_DDR_VDD2"},
{0x16,L"CPU1_DDR_VDD1"},
//JPG002006A-{0x18,L"CPU1_DDR_VDD2"},
{0x1B,L"SYS_V3.3_AUX"},
{0x10,L"SYS_V3.3"},
{0x1A,L"SYS_V5_AUX"},
{0x11,L"SYS_V5"},
{0x19,L"SYS_V12_AUX"},
{0x12,L"SYS_12V"},
{0x1C,L"P1V0_AUX_SENSOR"},
{0x1D,L"P1V05_PCH_SENSOR"},
{0x1E,L"P1V05_STBY_PCH"},
{0x47,L"CPU0_Status"},
{0x48,L"CPU1_Status"},
//JPG002006A-{0xC7,L"PROC_Hot"},
{0x45,L"PROC_Hot"}, //JPG002006A+
{0xC8,L"CPU_CATERR"},
{0xC9,L"CPU0_VR_FAULT"},
{0xCF,L"CPU1_VR_FAULT"},
{0x2C,L"CPU0_DTS_Temp"},
{0x2D,L"CPU1_DTS_Temp"},
{0x04,L"CPU0_Temp"},
{0xB0,L"CPU0_Margin_Temp"},
{0x05,L"CPU1_Temp"},
{0xb1,L"CPU1_Margin_Temp"},
{0x02,L"CPU0_VR_Temp"},
{0x03,L"CPU1_VR_Temp"},
{0x06,L"PCH_Temp"},
{0x00,L"Inlet_Temp"},
{0x01,L"Outlet_Temp"},
{0x3D,L"PSU_Inlet_Temp"},
{0x3E,L"SAS_MEZZ_TEMP"},
//JPG002006A- {0x3B,L"LOM_Temp"},
{0x0c,L"LOM_Temp"}, //JPG002006A+
{0x07,L"DIMMG0_Temp"},
{0x08,L"DIMMG1_Temp"},
//JPG002006A-START
/*{0xB2,L"DIMM_A1_TEMP"},
{0xB3,L"DIMM_A2_TEMP"},
{0xB4,L"DIMM_B1_TEMP"},
{0xB5,L"DIMM_B2_TEMP"},
{0xB6,L"DIMM_C1_TEMP"},
{0xB7,L"DIMM_C2_TEMP"},
{0xB8,L"DIMM_D1_TEMP"},
{0xB9,L"DIMM_D2_TEMP"},
{0xBA,L"DIMM_E1_TEMP"},
{0xBB,L"DIMM_E2_TEMP"},
{0xBC,L"DIMM_F1_TEMP"},
{0xBD,L"DIMM_F2_TEMP"},
{0xBE,L"DIMM_G1_TEMP"},
{0xBF,L"DIMM_G2_TEMP"},
{0xC0,L"DIMM_H1_TEMP"},
{0xC1,L"DIMM_H2_TEMP"},*/
//JPG002006A-END
//JPG002006A+START
//DJH002038A >>>
/*
{0xE0,L"DIMM_A1_TEMP"},
{0xE1,L"DIMM_A2_TEMP"},
{0xE2,L"DIMM_B1_TEMP"},
{0xE3,L"DIMM_B2_TEMP"},
{0xE4,L"DIMM_C1_TEMP"},
{0xE5,L"DIMM_C2_TEMP"},
{0xE6,L"DIMM_D1_TEMP"},
{0xE7,L"DIMM_D2_TEMP"},
{0xE8,L"DIMM_E1_TEMP"},
{0xE9,L"DIMM_E2_TEMP"},
{0xEA,L"DIMM_F1_TEMP"},
{0xEB,L"DIMM_F2_TEMP"},
{0xEC,L"DIMM_G1_TEMP"},
{0xED,L"DIMM_G2_TEMP"},
{0xEE,L"DIMM_H1_TEMP"},
{0xEF,L"DIMM_H2_TEMP"},
*/
{0xE0,L"DIMM_A1_TEMP"},
{0xE1,L"DIMM_A2_TEMP"},
{0xE3,L"DIMM_B1_TEMP"},
{0xE4,L"DIMM_B2_TEMP"},
{0xE6,L"DIMM_C1_TEMP"},
{0xE7,L"DIMM_C2_TEMP"},
{0xE9,L"DIMM_D1_TEMP"},
{0xEA,L"DIMM_D2_TEMP"},
{0xEC,L"DIMM_E1_TEMP"},
{0xED,L"DIMM_E2_TEMP"},
{0xEF,L"DIMM_F1_TEMP"},
{0xF0,L"DIMM_F2_TEMP"},
{0xF2,L"DIMM_G1_TEMP"},
{0xF3,L"DIMM_G2_TEMP"},
{0xF5,L"DIMM_H1_TEMP"},
{0xF6,L"DIMM_H2_TEMP"},
//DJH002038A <<<

//JPG002006A+END

//DJH002038A >>>
/*
{0x50,L"DIMM_A1_Status"},
{0x51,L"DIMM_A2_Status"},
{0x52,L"DIMM_B1_Status"},
{0x53,L"DIMM_B2_Status"},
{0x54,L"DIMM_C1_Status"},
{0x55,L"DIMM_C2_Status"},
{0x56,L"DIMM_D1_Status"},
{0x57,L"DIMM_D2_Status"},
{0x58,L"DIMM_E1_Status"},
{0x59,L"DIMM_E2_Status"},
{0x5A,L"DIMM_F1_Status"},
{0x5B,L"DIMM_F2_Status"},
{0x5C,L"DIMM_G1_Status"},
{0x5D,L"DIMM_G2_Status"},
{0x5E,L"DIMM_H1_Status"},
{0x5F,L"DIMM_H2_Status"},
*/
{0x50,L"DIMM_A1_Status"},
{0x51,L"DIMM_A2_Status"},
{0x53,L"DIMM_B1_Status"},
{0x54,L"DIMM_B2_Status"},
{0x56,L"DIMM_C1_Status"},
{0x57,L"DIMM_C2_Status"},
{0x59,L"DIMM_D1_Status"},
{0x5A,L"DIMM_D2_Status"},
{0x5C,L"DIMM_E1_Status"},
{0x5D,L"DIMM_E2_Status"},
{0x5F,L"DIMM_F1_Status"},
{0x60,L"DIMM_F2_Status"},
{0x62,L"DIMM_G1_Status"},
{0x63,L"DIMM_G2_Status"},
{0x65,L"DIMM_H1_Status"},
{0x66,L"DIMM_H2_Status"},
//DJH002038A <<<
{0x74, L"Core&VT-d"},
{0x75, L"Cbo"},
{0x76, L"Qpi"},
{0x77, L"PCI"},
//JPG002006A- {0x78, L"Memory"},
//JPG002006A- {0x79, L"BIOS POST"},
{0xCA,L"Memory_Hot_AB"},
{0xCC,L"Memory_Hot_CD"},
{0xCD,L"Memory_Hot_EF"},
{0xCE,L"Memory_Hot_GH"},
{0x42,L"PS1_Status"},
{0x43,L"PS2_Status"},
{0x0E,L"PSU0_Temp"},
{0x0F,L"PSU1_Temp"},
{0xD1,L"PSU1_CUR_IN"},
{0xDD,L"PSU1_CUR_OUT"},
{0xD2,L"PSU2_CUR_IN"},
{0xDE,L"PSU2_CUR_OUT"},
{0xD3,L"PSU1_VOL_IN"},
{0xD4,L"PSU1_VOL_OUT"},
{0xD5,L"PSU2_VOL_IN"},
{0xD6,L"PSU2_VOL_OUT"},
{0xD7,L"PSU1_POWER_IN"},
{0xD8,L"PSU1_POWER_OUT"},
{0xD9,L"PSU2_POWER_IN"},
{0xDA,L"PSU2_POWER_OUT"},
{0xA6,L"Total_Power"},
//JPG002006A-START
/*{0xE6,L"FAN_Consumption"},
{0xE7,L"HDD_12V_Power"},
{0xE8,L"HDD_5V_Power"},*/
//JPG002006A-END
//JPG002006A+START
{0xB3,L"FAN_Consumption"},
{0xC1,L"HDD_12V_Power"},
{0xC6,L"HDD_5V_Power"},
//JPG002006A+END
{0xCB,L"Chassis_Control"},
{0xC3,L"SYS_PWR_Monitor"},
//STS002002- {0xC4,L"IPMI_Watchdog"},
{0x9F,L"IPMI_Watchdog"}, //STS002002+
{0xC5,L"System Event"},
{0xd0,L"Chassis Intruder"},
{0xC2,L"NMI State"},
{0x9C,L"Button_Pressed"},
{0x9A,L"ACPI_Status"},
//DJH002027-- {0XE0,L"BIOS_Boot_Up"}, 
//DJH002027-- {0xE1,L"BIOS_POST_Status"},
{0X9D,L"BIOS_Boot_Up"}, //DJH002027++
{0xF4,L"BIOS_POST_Status"},//DJH002027++

//JPG002006+START
{0x20,L"SYS_FAN1_Speed"},
{0x21,L"SYS_FAN2_Speed"},
{0x22,L"SYS_FAN3_Speed"},
{0x23,L"SYS_FAN4_Speed"},
{0x24,L"SYS_FAN5_Speed"},
{0x25,L"SYS_FAN6_Speed"},
{0x26,L"SYS_FAN7_Speed"},
{0x27,L"SYS_FAN8_Speed"},
{0x28,L"SYS_FAN9_Speed"},
{0x29,L"SYS_FAN10_Speed"},
{0x2a,L"SYS_FAN11_Speed"},
{0x2b,L"SYS_FAN12_Speed"},
{0x30,L"SYS_FAN1_Presen"},
{0x31,L"SYS_FAN2_Presen"},
{0x32,L"SYS_FAN3_Presen"},
{0x33,L"SYS_FAN4_Presen"},
{0x34,L"SYS_FAN5_Presen"},
{0x35,L"SYS_FAN6_Presen"},
{0x40,L"PS1_Fan_Status"},
{0x41,L"PS2_Fan_Status"},
{0x44,L"Redundant_PSU"},
{0x70,L"DISK0_Status"},
{0x71,L"DISK1_Status"},
{0x72,L"DISK2_Status"},
{0x73,L"DISK3_Status"},
{0x74,L"DISK4_Status"},
{0x75,L"DISK5_Status"},
{0x76,L"DISK6_Status"},
{0x77,L"DISK7_Status"},
{0xb7,L"NVME_0_Status"},
{0xb8,L"NVME_1_Status"},
{0xb9,L"NVME_2_Status"},
{0xba,L"NVME_3_Status"},
{0x93,L"HBA_Present"},
{0x96,L"LAN_10G_Present"},
{0xa4,L"CPU_Power"},
{0xa5,L"MEM_Power"},
{0xb2,L"MotherBoard"},
{0xa2,L"RTC_Battery"},
{0xf5,L"RTC_Battery_Vol"},
{0xa3,L"Event_Log"},
{0x01,L"Time_Stamp_Sync"},
//JPG002006A+END
};
//JPG002006+END
//JPG002006-START
/*{0x02,L"FAN1_RPM_F"},
{0x01,L"FAN1_RPM_R"},
{0x04,L"FAN2_RPM_F"},
{0x03,L"FAN2_RPM_R"},
{0x06,L"FAN3_RPM_F"},
{0x05,L"FAN3_RPM_R"},
{0x08,L"FAN4_RPM_F"},
{0x07,L"FAN4_RPM_R"},
{0x0A,L"FAN5_RPM_F"},
{0x09,L"FAN5_RPM_R"},
{0x0C,L"FAN6_RPM_F"},
{0x0B,L"FAN6_RPM_R"},
{0x13,L"CPU0_VCORE"},
{0x14,L"CPU1_VCORE"},
{0x15,L"CPU0_DDR_VDD1"},
{0x17,L"CPU0_DDR_VDD2"},
{0x16,L"CPU1_DDR_VDD1"},
{0x18,L"CPU1_DDR_VDD2"},
{0x1B,L"SYS_V3.3_AUX"},
{0x12,L"SYS_V3.3"},
{0x1A,L"SYS_V5_AUX"},
{0x11,L"SYS_V5"},
{0x19,L"SYS_V12_AUX"},
{0x10,L"SYS_V12"},
{0x1C,L"P1V0_AUX_SENSOR"},
{0x1D,L"P1V05_PCH_SENSOR"},
{0x1E,L"P1V05_STBY_PCH"},
{0xC5,L"CPU0_Status"},
{0xC6,L"CPU1_Status"},
{0xC7,L"PROC_Hot"},
{0xC8,L"CPU_CATERR"},
{0xC9,L"CPU0_VR_FAULT"},
{0xCF,L"CPU1_VR_FAULT"},
{0x2C,L"CPU0_DTS_Temp"},
{0x2D,L"CPU1_DTS_Temp"},
{0x22,L"CPU0_Temp"},
{0x23,L"CPU0_Margin_Temp"},
{0x24,L"CPU1 _Temp"},
{0x25,L"CPU1_Margin_Temp"},
{0x26,L"CPU0_VR_Temp"},
{0x27,L"CPU1_VR_Temp"},
{0x29,L"PCH_Temp"},
{0x20,L"Inlet_Temp"},
{0x3C,L"Outlet_Temp"},
{0x3D,L"PSU_Inlet_Temp"},
{0x3E,L"SAS_MEZZ_TEMP"},
{0x3B,L"LOM_Temp"},
{0x2A,L"DIMMG0_Temp"},
{0x2B,L"DIMMG1_Temp"},
{0x40,L"DIMM_A1_TEMP"},
{0x41,L"DIMM_A2_TEMP"},
{0x42,L"DIMM_B1_TEMP"},
{0x43,L"DIMM_B2_TEMP"},
{0x44,L"DIMM_C1_TEMP"},
{0x45,L"DIMM_C2_TEMP"},
{0x46,L"DIMM_D1_TEMP"},
{0x47,L"DIMM_D2_TEMP"},
{0x48,L"DIMM_E1_TEMP"},
{0x49,L"DIMM_E2_TEMP"},
{0x4A,L"DIMM_F1_TEMP"},
{0x4B,L"DIMM_F2_TEMP"},
{0x4C,L"DIMM_G1_TEMP"},
{0x4D,L"DIMM_G2_TEMP"},
{0x4E,L"DIMM_H1_TEMP"},
{0x4F,L"DIMM_H2_TEMP"},
{0x60,L"DIMM_A1_Status"},
{0x61,L"DIMM_A2_Status"},
{0x62,L"DIMM_B1_Status"},
{0x63,L"DIMM_B2_Status"},
{0x64,L"DIMM_C1_Status"},
{0x65,L"DIMM_C2_Status"},
{0x66,L"DIMM_D1_Status"},
{0x67,L"DIMM_D2_Status"},
{0x68,L"DIMM_E1_Status"},
{0x69,L"DIMM_E2_Status"},
{0x6A,L"DIMM_F1_Status"},
{0x6B,L"DIMM_F2_Status"},
{0x6C,L"DIMM_G1_Status"},
{0x6D,L"DIMM_G2_Status"},
{0x6E,L"DIMM_H1_Status"},
{0x6F,L"DIMM_H2_Status"},
//TH0171A>>>
{0x74, L"Core&VT-d"},
{0x75, L"Cbo"},
{0x76, L"Qpi"},
{0x77, L"PCI"},
{0x78, L"Memory"},
{0x79, L"BIOS POST"},
//TH0171A<<<
{0xCA,L"Memory_Hot_AB"},
{0xCC,L"Memory_Hot_CD"},
{0xCD,L"Memory_Hot_EF"},
{0xCE,L"Memory_Hot_GH"},
{0x31,L"PS1_Status"},
{0x32,L"PS2_Status"},
{0xDB,L"PSU1_Temp"},
{0xDC,L"PSU2_Temp"},
{0xD1,L"PSU1_CUR_IN"},
{0xDD,L"PSU1_CUR_OUT"},
{0xD2,L"PSU1_CUR_IN"},
{0xDE,L"PSU2_CUR_OUT"},
{0xD3,L"PSU1_VOL_IN"},
{0xD4,L"PSU1_VOL_OUT"},
{0xD5,L"PSU2_VOL_IN"},
{0xD6,L"PSU2_VOL_OUT"},
{0xD7,L"PSU1_POWER_IN"},
{0xD8,L"PSU1_POWER_OUT"},
{0xD9,L"PSU2_POWER_IN"},
{0xDA,L"PSU2_POWER_OUT"},
{0x9F,L"Total_Power"},
{0xE7,L"HDD_12V_Power"},
{0xE8,L"HDD_5V_Power"},
{0xE6,L"FAN_Consumption"},
{0xD5,L"Chassis_Control"},
{0x53,L"SYS_PWR_Monitor"},
//STS002002- {0xC4,L"IPMI_Watchdog"},
{0x9F,L"IPMI_Watchdog"}, //STS002002+
{0xC3,L"SEL State"},
{0x51,L"System Event"},
{0x52,L"Chassis Intruder"},
{0x50,L"NMI State"},
{0xC2,L"Button_Pressed"},
{0xE1,L"BIOS_POST_Status"}, //TH0179++
};*/
//JPG002006-END
//TH0169<<<

#else 
//ZA0024 <<<
static VALUE_TO_DESC_STRING	gSensorNumTable[] = {
{0x00, L"Unspecified"},
{0x01, L"Other"},
{0x02, L"Unknown"},
{0x03, L"Processor"},
{0x04, L"Disk or Disk Bay"},
{0x05, L"Peripheral Bay"},
{0x06, L"System Management Module"},
{0x07, L"System Board"},
{0x08, L"Memory Module"},
{0x09, L"Processor Module"},
{0x0A, L"Power Supply"},
{0x0B, L"Add-in Card"},
{0x0C, L"Front Panel Board"},
{0x0D, L"Back Panel Board"},
{0x0E, L"Power System Board"},
{0x0F, L"Drive Backplane"},
{0x10, L"System Internal Expan. Board"},
{0x11, L"Other System Board"},
{0x12, L"Processor Board"},
{0x13, L"Power Unit/Domain"},
{0x14, L"Power Module (DC-to-DC)"},
{0x15, L"Power Management/Distribution"},
{0x16, L"Chassis Back Panel Board"},
{0x17, L"System Chassis"},
{0x18, L"Sub-Chassis"},
{0x19, L"Other Chassis Board"},
{0x1A, L"Disk Drive Bay"},
{0x1B, L"Peripheral Bay"},
{0x1C, L"Device Bay"},
{0x1D, L"Fan/Cooling Device"},
{0x1E, L"Cooling Unit/Cooling Domain"},
{0x1F, L"Cable/Interconnect"},
{0x20, L"Memory Device"},
{0x21, L"System Management Software"},
{0x22, L"System firmware(BIOS/EFI)"},
{0x23, L"Operating System"},
{0x24, L"System Bus"},
{0x25, L"Group"},
{0x26, L"Remote Manage. Comm. Device"},
{0x27, L"External Environment"},
{0x28, L"Battery"},
{0x29, L"Processing Blade"},
{0x2A, L"Connectivity Switch"},
{0x2B, L"Processor/Memory Module"},
{0x2C, L"I/O Module"},
{0x2D, L"Processor/IO Module"},
{0x2E, L"Management Controller Firmware"},
{0x2F, L"IPMI Channel"},
{0x30, L"PCI Bus"},
{0x31, L"PCI Express Bus"},
{0x32, L"SCSI Bus(Parallel)"},
{0x33, L"SATA/SAS Bus"},
{0x34, L"Processor/Front-Side Bus"},
{0x35, L"Real Time Clock"},
{0x36, L"Reserved"},
{0x37, L"Air Inlet"},
{0x40, L"Air inlet"},
{0x41, L"Processor/CPU"},
{0x42, L"Baseboard/Main System board"}

};
#endif //ZA0024
//
// Sensor Number count in Look up table
//
#define SENSOR_NUM_COUNT ( sizeof(gSensorNumTable) / sizeof(VALUE_TO_DESC_STRING) )

//TH0170>>>
#define BIOS_GENERATOR_ID     0x03
#define SMI_GENERATOR_ID     0x33
#define ME_GENERATOR_ID     0x2C
#define BMC_GENERATOR_ID     0x20

static VALUE_TO_DESC_STRING	gMeSensorNumTable[] = {
{0x08, L"PCH Temp Sensor"},
{0x16, L"ME Power State Sensor"},
{0x17, L"ME FW Health Sensor"},
{0x18, L"NM Exception Event Sensor"},
{0x19, L"NM Health Event Sensor"},
{0x1A, L"NM Operational Capabilities Sensor"},
{0x1B, L"NM Threshold Exceeded Event Sensor"},
{0x1C, L"CPU 0 Thermal Status"},
{0x1D, L"CPU 1 Thermal Status"},
{0x3A, L"Power Off Event"},
{0x3B, L"DCMI Power Threshold Event"},
{0x4E, L"PSU 0 AC Power Input"},
{0x4F, L"PSU 1 AC Power Input"},
{0x66, L"PSU 0 Status"},
{0x67, L"PSU 1 Status"},
{0x75, L"CPU 0  Package Power Reading"},
{0x76, L"CPU 1  Package Power Reading"},
{0x79, L"CPU 0  Memory Power Reading"},
{0x7A, L"CPU 1  Memory Power Reading"},
{0x7F, L"BMC Inlet Temperature readings"},
{0x80, L"Pmbus OEM1 device1"},
{0x81, L"Pmbus OEM1 device2"},
{0x84, L"Pmbus OEM1 device5"},
{0x85, L"Pmbus OEM1 device6"},
{0x86, L"Pmbus OEM1 device7"},
{0x87, L"Pmbus OEM1 device8"},
{0x88, L"Pmbus OEM1 device9"},
{0x89, L"Pmbus OEM1 device10"},
{0x8B, L"Pmbus OEM1 device12"},
{0x8D, L"Pmbus OEM1 device14"},
{0x8F, L"Pmbus OEM1 device16"},
{0x91, L"Pmbus OEM1 device18"},
{0x92, L"Pmbus OEM1 device19"},
{0xA2, L"Volumetric Airflow"},
{0xA3, L"Inlet Airflow Temperature"},
{0xA4, L"PSU 0 DC Power Output"},
{0xA5, L"PSU 1 DC Power Output"},
{0xAD, L"Total Chassis Power"},
{0xB2, L"NM SmaRT&CLST Sensor"},
{0xBD, L"Outlet Airflow Temperature"},
{0xBE, L"CUPS CPU Utilization"},
{0xBF, L"CUPS IO Utilization"},
{0xC0, L"CUPS Memory Utilization"},
{0xC1, L"CUPS Event"},
{0xC5, L"Host Partition Reset Timeout-Based Reset Suppression"},
{0xC6, L"BMC Fan Speed"}
};

//
// ME Sensor Number count in Look up table
//
#define ME_SENSOR_NUM_COUNT ( sizeof(gMeSensorNumTable) / sizeof(VALUE_TO_DESC_STRING) )

//TH0170<<<
//
// 00h-42h: IPMI 2.0 Revision-1 specification defined Entities.
//
#define IPMI_SPEC_DEFINED_SENSOR_NUM_START      0x00
#define IPMI_SPEC_DEFINED_SENSOR_NUM_END        0x42

//
// Reserved Sensory numbers based on IPMI 2.0 Revision-1 specification.
//
#define RESERVED_SENSOR_NUM_START               IPMI_SPEC_DEFINED_SENSOR_NUM_END+1
#define RESERVED_SENSOR_NUM_END                 0x8F
#define RESERVED_SENSOR_NUMBER_STRING           L"Reserved or Unknown"

//
// 90h-AFh: Chassis-specific Entities.
// These IDs are system specific and can be assigned by the chassis provider. 
//
#define CHASSIS_SPECIFIC_SENSOR_NUM_START       0x90
#define CHASSIS_SPECIFIC_SENSOR_NUM_END         0xAF
#define CHASSIS_SPECIFIC_NUMBER_STRING          L"Chassis Specific (Unknown)"

//
// B0h-CFh: Board-set specific Entities.
// These IDs are system specific and can be assigned by the Board-set provider. 
//
#define BOARD_SPECIFIC_SENSOR_NUM_START         0xB0
#define BOARD_SPECIFIC_SENSOR_NUM_END           0xCF
#define BOARD_SPECIFIC_NUMBER_STRING            L"Board Set Specific (Unknown)"

//
// D0h-FFh: OEM System Integrator defined.
// These IDs are system specific and can be assigned by the system integrator or OEM. 
//
#define OEM_SPECIFIC_SENSOR_NUM_START           0xD0
#define OEM_SPECIFIC_SENSOR_NUM_END             0xFF
#define OEM_SPECIFIC_NUMBER_STRING              L"OEM (Unknown)"

#define IsOEMEvData2SelRecordDataValid(OEMEvData1) \
            ( (OEMEvData1 & 0xC0)  ? TRUE : FALSE )

#define IsOEMEvData3SelRecordDataValid(OEMEvData1) \
            ( (OEMEvData1 & 0x30)  ? TRUE : FALSE )

#define IsSensorSpecOffsetMathedWithTableEntry(TableEntry, SelRecordData) \
    ( (TableEntry.SensorSpecOffset == (SelRecordData.OEMEvData1 & 0x0F)) ? TRUE : FALSE )

#define IsOEMEvData2MathedWithTableEntry(TableEntry, SelRecordData) \
    ( ( ((TableEntry.Mask2 & SelRecordData.OEMEvData2) | TableEntry.Or2) == TableEntry.Value2 ) ? TRUE : FALSE )

#define IsOEMEvData3MathedWithTableEntry(TableEntry, SelRecordData) \
    ( ( ((TableEntry.Mask3 & SelRecordData.OEMEvData3) | TableEntry.Or3) == TableEntry.Value3 ) ? TRUE : FALSE )

#define UpdateSensorSpecOffsetString(TableEntry, SelRecordData) \
    IsSensorSpecOffsetMathedWithTableEntry(TableEntry, SelRecordData)

#define UpdateOEMEvData2String(TableEntry, SelRecordData) \
    ( IsSensorSpecOffsetMathedWithTableEntry(TableEntry, SelRecordData) &&\
      (TableEntry.Mask2 != 0x00) &&\
      IsOEMEvData2MathedWithTableEntry(TableEntry, SelRecordData) )

#define UpdateOEMEvData3String(TableEntry, SelRecordData) \
    ( IsSensorSpecOffsetMathedWithTableEntry(TableEntry, SelRecordData) &&\
      (TableEntry.Mask3 != 0x00) &&\
      IsOEMEvData3MathedWithTableEntry(TableEntry, SelRecordData) )

//
// Sensor Type Look up table
//
static VALUE_TO_DESC_STRING  gSensorTypeTable[] = {
{0x00, L"Reserved"},
{0x01, L"Temperature"},
{0x02, L"Voltage"},
{0x03, L"Current"},
{0x04, L"Fan"},
{0x05, L"Physical Security"},
{0x06, L"Platform Security Violation Attempt"},
{0x07, L"Processor"},
{0x08, L"Power Supply"},
{0x09, L"Power Unit"},
{0x0A, L"Cooling Device"},
{0x0B, L"Other Units-Based Sensor"},
{0x0C, L"Memory"},
{0x0D, L"Drive Slot (Bay)"},
{0x0E, L"POST Memory Resize"},
{0x0F, L"System Firmware Progress"},
{0x10, L"Event Logging Disabled"},
{0x11, L"Watchdog 1"},
{0x12, L"System Event"},
{0x13, L"Critical Interrupt"},
{0x14, L"Button/Switch"},
{0x15, L"Module/Board"},
{0x16, L"Microcontroller/Coprocessor"},
{0x17, L"Add-In Card"},
{0x18, L"Chassis"},
{0x19, L"Chip Set"},
{0x1A, L"Other FRU"},
{0x1B, L"Cable/Interconnect"},
{0x1C, L"Terminator"},
{0x1D, L"System Boot/Restart Initiated"},
{0x1E, L"Boot Error"},
{0x1F, L"OS Boot"},
{0x20, L"OS Stop/Shutdown"},
{0x21, L"Slot/Connector"},
{0x22, L"System ACPI Power State"},
{0x23, L"Watchdog 2"},
{0x24, L"Platform Alert"},
{0x25, L"Entity Presence"},
{0x26, L"Monitor ASIC/IC"},
{0x27, L"LAN"},
{0x28, L"Management Subsystem Health"},
{0x29, L"Battery"},
{0x2A, L"Session Audit"},
{0x2B, L"Version Change"},
{0x2C, L"FRU State"},
{0xCF, L"Ali special sensor"} //TH0169

};
//
// Sensor Type count in Look up table
//
#define SENSOR_TYPE_COUNT ( sizeof(gSensorTypeTable) / sizeof(VALUE_TO_DESC_STRING) )

//
// 00h-2Ch: IPMI 2.0 Revision-1 specification defined Sensor types.
//
#define IPMI_SPEC_DEFINED_SENSOR_TYPE_START      0x00
#define IPMI_SPEC_DEFINED_SENSOR_TYPE_END        0x2C

//
// Reserved Sensory Types based on IPMI 2.0 Revision-1 specification.
//
#define RESERVED_SENSOR_TYPE_START               IPMI_SPEC_DEFINED_SENSOR_TYPE_END+1
#define RESERVED_SENSOR_TYPE_END                 0xBF
#define RESERVED_SENSOR_TYPE_STRING              L"Reserved or Unknown"

//
// C0h-FFh: OEM Reserved.
// These Sensor types are system specific and can be assigned by the system integrator or OEM. 
//
//TH0170>>>
#define STANDARD_RECORD_TYPE          0x02
#define OEM_TIMESTAMP_RECORD_TYPE_START           0xC0
#define OEM_TIMESTAMP_RECORD_TYPE_END           0xDF

#define OEM_NON_TIMESTAMP_RECORD_TYPE_START             0xE0
#define OEM_NON_TIMESTAMP_RECORD_TYPE_END             0xFF
//TH0170<<<
#define OEM_SPECIFIC_SENSOR_TYPE_START           0xC0
#define OEM_SPECIFIC_SENSOR_TYPE_END             0xFF
#define OEM_SPECIFIC_TYPE_STRING                 L"OEM (Unknown)"

//
// Sensor Offset string Look up table
//
/*
SENSOR SPEC  EVENT DATA  EVENT DATA  EVENT DATA  EVENT DATA  EVENT DATA  EVENT DATA  STRING
OFFSET,      2 MASK,     2 OR,       2 VALUE,    3 MASK,     3 OR,       3 VALUE,
*/

//
// Sensor Type: 0x05 - Physical Security Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x05[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"General Chassis Intrusion"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Drive Bay Intrusion"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"I/O Card Area Intrusion"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Processor Area Intrusion"},

{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"LAN Leash Lost(system is unplugged from LAN)"},
{0x04,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Network controller the leash was lost on: "},

{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Unauthorized Dock"},
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FAN Area Intrusion"},
};

//
// Sensor Type: 0x06 - Platform Security Violation Attempt Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x06[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Secure Mode Violation Attempt"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Pre-boot Password Violation - User"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Pre-boot Password Violation - Setup"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Pre-boot Password Violation - Network Boot"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Pre-boot Password Violation - Other"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Out-of-band Access Password Violation"},
};

//TH0171>>>
//
// Sensor Type: 0x07 - Processor Sensor Type.  Sensor number:0x76
//

static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x07QPI[] =
{
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Configuration Error"},
//CPU QPI errors
{0x05,  0xF0,  0xF0,  0xF0,  0x00,  0x00,  0x00,  L"CPU:"}, 
{0x05,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"QPI port:"},  

{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x00,  L"QPI Physical Layer Control Error"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x02,  L"QPI Physical Layer Detected Drift Buffer Alarm"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x03,  L"QPI Physical Layer Detected Latency Buffer Rollover"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x10,  L"QPI Link Layer Detected Control Error from R3QPI"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x11,  L"Rx detected CRC error Unsuccessful Link Level Retry(entered LLR abort state)"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x12,  L"QPI Link Layer detected unsupported/undefined packet"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x13,  L"QPI Link Layer Detected Control Error"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x14,  L"L0p not exited prior to retrain interval"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x15,  L"RBT used un-initialized value"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x16,  L"Debug Flit CRC"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x1F,  L"QPI Config access crossing 32-bit boundary"}, 
//IOH QPI Errors 		
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xB4,  L"Write Cache Detected ECC Correctable Error"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xC1,  L"Coherency Interface Protocol Layer Received Poisoned packet"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xC2,  L"I/O module Write Cache uncorrectable Data ECC error"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xC3,  L"I/O module CSR access crossing 32-bit boundary"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xD7,  L"Coherent Interface Protocol Layer Received Unexpected or IllegalResponse/Completion"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xDA,  L"Coherent Interface Protocol Layer Queue/Table Overflow or Underflow"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xDB,  L"Coherent Interface Protocol Parity Error"}, 
};

//Sensor Type: 0x07 - Processor Sensor Type.  Sensor number:0x75
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x07CBO[] =
{
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Configuration Error"},
//Cbo errors SEL
{0x05,  0xF0,  0x00,  0xB0,  0x00,  0x00,  0x00,  L"Cbo"},
{0x05,  0x0F,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Fatal Error"}, 
{0x05,  0x0F,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Correctable Error"},
{0x05,  0x00,  0x00,  0xFF,  0xF8,  0xF8,  0xF8,  L"CoreID:"},
{0x05,  0x00,  0x00,  0xFF,  0x04,  0x04,  0x04,  L"ThreadId:"},
{0x05,  0x00,  0x00,  0xFF,  0x03,  0x03,  0x03,  L"Cbo:"},

};
//TH0171<<<
//
// Sensor Type: 0x07 - Processor Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x07[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"IERR"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Thermal Trip"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRB1/BIST Failure"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRB2/Hand in POST Failure"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRB3/Processor Startup/Initialization Failure"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Configuration Error"},
//TH0171>>>
//CPU Core errors
{0x05,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"CPU"}, 
{0x05,  0x0F,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Core Fatal Error"}, 
{0x05,  0x0F,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Core Correctable Error"}, 

{0x05,  0x00,  0x00,  0xFF,  0xF0,  0x00,  0x00,  L"CPU:0x00"},
{0x05,  0x00,  0x00,  0xFF,  0xF0,  0x00,  0x10,  L"CPU:0x01"},
{0x05,  0x00,  0x00,  0xFF,  0x0F,  0x00,  0x00,  L"Instruction Fetch Unit"}, 
{0x05,  0x00,  0x00,  0xFF,  0x0F,  0x00,  0x01,  L"Data Cache Unit"}, 
{0x05,  0x00,  0x00,  0xFF,  0x0F,  0x00,  0x02,  L"Data Translation Look-aside Buffer"}, 
{0x05,  0x00,  0x00,  0xFF,  0x0F,  0x00,  0x03,  L"Mid Level Cache"}, 
//IOH Core errors 
{0x05,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"CPU:0x00"}, 
{0x05,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"CPU:0x01"}, 

{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xC4,  L"Master Abort Error"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xC5,  L"Completer Abort Error"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xC6,  L"Overflow/Underflow Error"}, 
//VT-d errors data2 :IOH Core errors 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x90,  L"Data Parity Error during Context Cache Lookup"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x91,  L"Data Parity Error during L1 Lookup"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x92,  L"Data Parity Error during L2 Lookup"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x93,  L"Data Parity Error during L3 Lookup"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x94,  L"TLB0 Data Parity Error"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x95,  L"TLB1 Data Parity Error"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x96,  L"Unsuccessful completion status received in the coherent interface"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x97,  L"Illegal request to 0xFEE"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0x98,  L"Protected Memory region space violated status"}, 
{0x05,  0x00,  0x00,  0xFF,  0xFF,  0x00,  0xA0,  L"Intel VT-d spec defined errors"}, 
//TH0171<<<
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"SM BIOS Uncorrectable CPU-Complex Error"},
{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Processor Presence Detected"},
{0x08,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Processor Disabled"},
{0x09,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Terminator Presence Detected"},
{0x0A,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Processor Automatically Throttled"},
{0x0B,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Machine Check Exception(Uncorrectable)"},
{0x0C,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Correctable Machine check Error"},
};

//
// Sensor Type: 0x08 - Power Supply Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x08[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Presence Detected"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Supply Failure Detected"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Predictive Failure"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Supply Input Lost (AC/DC)"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Supply Input Lost or Out-of-range"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Supply Input Out-of-range"},

{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Configuration Error"},
{0x06,  0x00,  0x00,  0x00,  0x0F,  0x00,  0x00,  L"Error Type: Vendor Mismatch"},
{0x06,  0x00,  0x00,  0x00,  0x0F,  0x00,  0x01,  L"Error Type: Revision Mismatch"},
{0x06,  0x00,  0x00,  0x00,  0x0F,  0x00,  0x02,  L"Error Type: Processor Missing"},
{0x06,  0x00,  0x00,  0x00,  0x0F,  0x00,  0x03,  L"Error Type: Power Supply rating Mismatch"},
{0x06,  0x00,  0x00,  0x00,  0x0F,  0x00,  0x04,  L"Error Type: Voltage rating Mismatch"},
};

//
// Sensor Type: 0x09 - Power Unit Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x09[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Off/Power Down"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Cycle"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"240VA Power Down"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Interlock Power Down"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"AC Lost/Power Input Lost"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Soft Power Control Failure"},
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Unit Failure Detected"},
{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Predictive Failure"},
};

//
// Sensor Type: 0x0C - Memory Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x0C[] =
{
//TH0159A {0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Correctable ECC/Other Correctable Memory Error"},
//TH0159A {0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Uncorrectable ECC/Other Uncorrectable Memory Error"},
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Correctable Memory Error"},	//TH0159A
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Uncorrectable Memory Error"}, //TH0159A
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Parity"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Memory Scrub Failed (Stuck Bit)"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Memory Device Disabled"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Correctable Memory Error Logging Limit Reached"},
//TH0159A>>>
#if OEM_SEL_LOG_SUPPORT == 1
{0x01,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"DIMM A1"},
{0x01,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"DIMM A2"},
{0x01,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"DIMM B1"},
{0x01,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"DIMM B2"},
{0x01,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"DIMM C1"},
{0x01,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"DIMM C2"},
{0x01,  0xFF,  0x00,  0x18,  0x00,  0x00,  0x00,  L"DIMM D1"},
{0x01,  0xFF,  0x00,  0x19,  0x00,  0x00,  0x00,  L"DIMM D2"},
{0x01,  0xFF,  0x00,  0x40,  0x00,  0x00,  0x00,  L"DIMM E1"},
{0x01,  0xFF,  0x00,  0x41,  0x00,  0x00,  0x00,  L"DIMM E2"},
{0x01,  0xFF,  0x00,  0x48,  0x00,  0x00,  0x00,  L"DIMM F1"},
{0x01,  0xFF,  0x00,  0x49,  0x00,  0x00,  0x00,  L"DIMM F2"},
{0x01,  0xFF,  0x00,  0x50,  0x00,  0x00,  0x00,  L"DIMM G1"},
{0x01,  0xFF,  0x00,  0x51,  0x00,  0x00,  0x00,  L"DIMM G2"},
{0x01,  0xFF,  0x00,  0x58,  0x00,  0x00,  0x00,  L"DIMM H1"},
{0x01,  0xFF,  0x00,  0x59,  0x00,  0x00,  0x00,  L"DIMM H2"},

{0x01,  0x00,  0x00,  0x00,  0x01,  0x00,  0x00,  L"Current boot"},
{0x01,  0x00,  0x00,  0x00,  0x01,  0x00,  0x01,  L"Last boot"},


{0x05,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"DIMM A1"},
{0x05,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"DIMM A2"},
{0x05,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"DIMM B1"},
{0x05,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"DIMM B2"},
{0x05,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"DIMM C1"},
{0x05,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"DIMM C2"},
{0x05,  0xFF,  0x00,  0x18,  0x00,  0x00,  0x00,  L"DIMM D1"},
{0x05,  0xFF,  0x00,  0x19,  0x00,  0x00,  0x00,  L"DIMM D2"},
{0x05,  0xFF,  0x00,  0x40,  0x00,  0x00,  0x00,  L"DIMM E1"},
{0x05,  0xFF,  0x00,  0x41,  0x00,  0x00,  0x00,  L"DIMM E2"},
{0x05,  0xFF,  0x00,  0x48,  0x00,  0x00,  0x00,  L"DIMM F1"},
{0x05,  0xFF,  0x00,  0x49,  0x00,  0x00,  0x00,  L"DIMM F2"},
{0x05,  0xFF,  0x00,  0x50,  0x00,  0x00,  0x00,  L"DIMM G1"},
{0x05,  0xFF,  0x00,  0x51,  0x00,  0x00,  0x00,  L"DIMM G2"},
{0x05,  0xFF,  0x00,  0x58,  0x00,  0x00,  0x00,  L"DIMM H1"},
{0x05,  0xFF,  0x00,  0x59,  0x00,  0x00,  0x00,  L"DIMM H2"},

{0x05,  0x00,  0x00,  0x00,  0x01,  0x00,  0x00,  L"Current boot"},
{0x05,  0x00,  0x00,  0x00,  0x01,  0x00,  0x01,  L"Last boot"},

#else
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x00,  L"DIMM A1"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x01,  L"DIMM A2"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x10,  L"DIMM B1"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x11,  L"DIMM B2"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x20,  L"DIMM C1"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x21,  L"DIMM C2"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x30,  L"DIMM D1"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x31,  L"DIMM D2"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x40,  L"DIMM E1"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x41,  L"DIMM E2"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x50,  L"DIMM F1"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x51,  L"DIMM F2"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x60,  L"DIMM G1"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x61,  L"DIMM G2"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x70,  L"DIMM H1"},
{0x01,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x71,  L"DIMM H2"},

{0x01,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Current boot"},
{0x01,  0x01,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Last boot"},


{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x00,  L"DIMM A1"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x01,  L"DIMM A2"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x10,  L"DIMM B1"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x11,  L"DIMM B2"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x20,  L"DIMM C1"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x21,  L"DIMM C2"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x30,  L"DIMM D1"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x31,  L"DIMM D2"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x40,  L"DIMM E1"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x41,  L"DIMM E2"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x50,  L"DIMM F1"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x51,  L"DIMM F2"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x60,  L"DIMM G1"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x61,  L"DIMM G2"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x70,  L"DIMM H1"},
{0x05,  0x0F,  0x00,  0xFF,  0xFF,  0x00,  0x71,  L"DIMM H2"},

{0x05,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Current boot"},
{0x05,  0x01,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Last boot"},
#endif
//TH0159A<<<
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Presence Detected"},
{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Configuration Error"},

{0x08,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Spare"},
{0x08,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  L"Memory Module/device identification: "},

{0x09,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Memory Automatically throttled"},
{0x0A,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Critical Over temperature"},
};

//
// Sensor Type: 0x0D - Drive Slot (BAY) Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x0D[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Drive Presence"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Drive Fault"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Predictive Failure"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Hot Spare"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Consistency Check/ Parity Check in progress"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"In Critical Array"},
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"In failed Array"},
{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Rebuild/Remap in Progress"},
{0x08,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Rebuild/Remap Aborted"},
};

//
// Sensor Type: 0x0F - System Firmware Progress Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x0F[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"System Firmware Error"},
{0x00,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Unspecified"},
{0x00,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"No System Memory is Physically Installed in The System"},
{0x00,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"No Usable System Memory, all installed memory has experienced an unrecoverable failure"},
{0x00,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Unrecoverable Hard-Disk/ATAPI/IDE device failure"},
{0x00,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Unrecoverable System-board Failure"},
{0x00,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Unrecoverable Diskette Subsystem Failure"},
{0x00,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Unrecoverable Hard-Disk Controller Failure"},
//TH0179-- {0x00,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Unrecoverable Unrecoverable PS/2 or USB keyboard Failure"},
{0x00,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Unrecoverable PS/2 or USB keyboard Failure"}, //TH0179++
{0x00,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Removable Boot Media Not Found"},
{0x00,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Unrecoverable Video Controller Failure"},
{0x00,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"No Video Device Detected"},
{0x00,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Firmware (BIOS) ROM corruption Detected"},
{0x00,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"CPU Voltage Mismatch"},
{0x00,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"CPU Speed Matching Failure"},

{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"System Firmware Hang"},
{0x01,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Unspecified"},
{0x01,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Memory Initialization"},
{0x01,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Hard-Disk Initialization"},
{0x01,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Secondary Processor(s) Initialization"},
{0x01,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"User Authentication"},
{0x01,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"User-Initiated System Setup"},
{0x01,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"USB Resource Configuration"},
{0x01,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"PCI Resource Configuration"},
{0x01,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Option ROM Initialization"},
{0x01,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Video Initialization"},
{0x01,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Cache Initialization"},
{0x01,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"SM Bus Initialization"},
{0x01,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Keyboard Controller Initialization"},
{0x01,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Embedded Controller/Management Controller Initialization"},
{0x01,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Docking Station Attachment"},
{0x01,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Enabling Docking Station"},
{0x01,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Docking Station Ejection"},
{0x01,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Disabling Docking Station"},
{0x01,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Calling Operating System Wake-up Vector"},
{0x01,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Starting Operating System Boot Process"},
{0x01,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Baseboard or Motherboard Initialization"},
{0x01,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Floppy Initialization"},
{0x01,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Keyboard Test"},
{0x01,  0xFF,  0x00,  0x18,  0x00,  0x00,  0x00,  L"Pointing Device Test"},
{0x01,  0xFF,  0x00,  0x19,  0x00,  0x00,  0x00,  L"Primary Processor Initialization"},

{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"System Firmware Progress"},
{0x02,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Unspecified"},
{0x02,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Memory Initialization"},
{0x02,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Hard-Disk Initialization"},
{0x02,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Secondary Processor(s) Initialization"},
{0x02,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"User Authentication"},
{0x02,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"User-Initiated System Setup"},
{0x02,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"USB Resource Configuration"},
{0x02,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"PCI Resource Configuration"},
{0x02,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Option ROM Initialization"},
{0x02,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Video Initialization"},
{0x02,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Cache Initialization"},
{0x02,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"SM Bus Initialization"},
{0x02,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Keyboard Controller Initialization"},
{0x02,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Embedded Controller/Management Controller Initialization"},
{0x02,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Docking Station Attachment"},
{0x02,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Enabling Docking Station"},
{0x02,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Docking Station Ejection"},
{0x02,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Disabling Docking Station"},
{0x02,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Calling Operating System Wake-up Vector"},
{0x02,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Starting Operating System Boot Process"},
{0x02,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Baseboard or Motherboard Initialization"},
{0x02,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Floppy Initialization"},
{0x02,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Keyboard Test"},
{0x02,  0xFF,  0x00,  0x18,  0x00,  0x00,  0x00,  L"Pointing Device Test"},
{0x02,  0xFF,  0x00,  0x19,  0x00,  0x00,  0x00,  L"Primary Processor Initialization"},
};

//
// Sensor Type: 0x10 - Event Logging Disabled Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x10[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Correctable Memory Error Logging Disabled"},
{0x00,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Memory module/device identification: "},

{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Event 'Type' Logging Disabled"},
{0x01,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Event/Reading Type Code: "},
{0x01,  0x00,  0x00,  0x00,  0x20,  0x00,  0x20,  L"Logging Disabled For all Event of This Type"},
{0x01,  0x00,  0x00,  0x00,  0x10,  0x00,  0x10,  L"Assertion Event"},
{0x01,  0x00,  0x00,  0x00,  0x10,  0x00,  0x00,  L"Deassertion Event"},
{0x01,  0x00,  0x00,  0x00,  0x0F,  0x0F,  0x0F,  L"Event Offset: "},

{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Log Area Reset/Cleared"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"All Event Logging Disabled"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"SEL Full"},

{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"SEL Almost Full"},
{0x05,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  L"Currently (0=Empty, 64=Full): "},

{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Correctable Machine Check Error Logging Disabled"},
{0x06,  0x00,  0x00,  0x00,  0x80,  0x00,  0x00,  L"Entity Instance Number"},
{0x06,  0x00,  0x00,  0x00,  0x80,  0x00,  0x80,  L"Vendor-Specific Processor Number"},
{0x06,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Instance ID/Processor Number: "},
};

//
// Sensor Type: 0x12 - System Event Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x12[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"System Reconfiguration"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"OEM System Boot Event"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Undetermined System Hardware Failure"},

{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Entry Added To Auxiliary Log"},
{0x03,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Log Entry Action: Entry Added"},
{0x03,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Log Entry Action: Entry Added Because Event Did Not Map To Standard IPMI Event"},
{0x03,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Log Entry Action: Entry Added Along With One or More Corrosponding SEL Entries"},
{0x03,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Log Entry Action: Log Cleared"},
{0x03,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Log Entry Action: Log Disabled"},
{0x03,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Log Entry Action: Log Enabled"},
{0x03,  0x0F,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Log Type: MCA Log"},
{0x03,  0x0F,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Log Type: OEM 1"},
{0x03,  0x0F,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Log Type: OEM 2"},

{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"PEF Action"},
{0x04,  0x01,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Alert"},
{0x04,  0x02,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Power Off"},
{0x04,  0x04,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Reset"},
{0x04,  0x08,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Power Cycle"},
{0x04,  0x10,  0x00,  0x10,  0x00,  0x00,  0x00,  L"OEM Action"},
{0x04,  0x20,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Diagnostic Interrupt (NMI)"},

{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"TimeStamp Clock Synch"},
{0x05,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Event is First of Pair"},
{0x05,  0x80,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Event is Second of Pair"},
{0x05,  0x0F,  0x00,  0x00,  0x00,  0x00,  0x00,  L"SEL TimeStamp Clock Updated"},
{0x05,  0x0F,  0x00,  0x01,  0x00,  0x00,  0x00,  L"SDR TimeStamp Clock Updated"},
};

//
// Sensor Type: 0x13 - Critical Interrupt Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x13[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Front Panel NMI/Diagnostic Interrupt"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Bus Timeout"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"I/O Channel Check NMI"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Software NMI"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"PCI PERR"},
//TH0171>>>
{0x04,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Bus:"},
{0x04,  0x0F,  0x00,  0xFF,  0xF8,  0xF8,  0xF8,  L"Dev:"},
{0x04,  0x0F,  0x00,  0xFF,  0x07,  0x07,  0x07,  L"Fun:"},
//TH0171<<<
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"PCI SERR"},
//TH0171>>>
{0x05,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Bus:"},
{0x05,  0x0F,  0x00,  0xFF,  0xF8,  0xF8,  0xF8,  L"Dev:"},
{0x05,  0x0F,  0x00,  0xFF,  0x07,  0x07,  0x07,  L"Fun:"},
//TH0171<<<
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"EISA Fail Safe Timeout"},
{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Bus Correctable Error"},
//TH0171>>>
{0x07,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Bus:"},

{0x07,  0x0F,  0x00,  0xFF,  0xF8,  0xF8,  0xF8,  L"Dev:"},
{0x07,  0x0F,  0x00,  0xFF,  0x07,  0x07,  0x07,  L"Fun:"},
//TH0171<<<
{0x08,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Bus Uncorrectable Error"},
//TH0171>>>
{0x08,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Bus:"},
{0x08,  0x0F,  0x00,  0xFF,  0xF8,  0xF8,  0xF8,  L"Dev:"},
{0x08,  0x0F,  0x00,  0xFF,  0x07,  0x07,  0x07,  L"Fun:"},
//TH0171<<<
{0x09,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Fatal NMI"},
{0x0A,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Bus Fatal Error"},
//TH0171>>>
{0x0A,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Bus:"},
{0x0A,  0x0F,  0x00,  0xFF,  0xF8,  0xF8,  0xF8,  L"Dev:"},
{0x0A,  0x0F,  0x00,  0xFF,  0x07,  0x07,  0x07,  L"Fun:"},
//TH0171<<<
{0x0B,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Bus Degraded"},
};

//
// Sensor Type: 0x14 - Button / Switch Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x14[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Button Pressed"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Sleep Button Pressed"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Reset Button Pressed"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Latch Open"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Service Request Button"},
};

//
// Sensor Type: 0x19 - Chip Set Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x19[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Soft Power Control Feature"},
{0x00,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Requested power state: S0/G0 Working"},
{0x00,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Requested power state: S1 Sleeping With System H/W & Processor Context Maintained"},
{0x00,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Requested power state: S2 Sleeping, Processor Context Lost"},
{0x00,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Requested power state: S3 Sleeping, Processor & H/W Context Lost, Memory Retained"},
{0x00,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Requested power state: S4 Non-Volatile Sleep/Suspend-to Disk"},
{0x00,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Requested power state: S5/G2 Soft-Off"},
{0x00,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Requested power state: S4/S5 Soft-Off, Particular S4/S5 State Cannot be Determined"},
{0x00,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Requested power state: G3/Mechanical Off"},
{0x00,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Requested power state: Sleeping In An S1, S2, or S3 States"},
{0x00,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Requested power state: G1 Sleeping"},
{0x00,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Requested power state: S5 Entered By Override"},
{0x00,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Requested power state: Legacy ON State"},
{0x00,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Requested power state: Legacy OFF State"},

{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x00,  L"Power State At Time Of Request: S0/G0 Working"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x01,  L"Power State At Time Of Request: S1 Sleeping With System H/W & Processor Context Maintained"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x02,  L"Power State At Time Of Request: S2 Sleeping, Processor Context Lost"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x03,  L"Power State At Time Of Request: S3 Sleeping, Processor & H/W Context Lost, Memory Retained"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x04,  L"Power State At Time Of Request: S4 Non-Volatile Sleep/Suspend-to Disk"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x05,  L"Power State At Time Of Request: S5/G2 Soft-Off"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x06,  L"Power State At Time Of Request: S4/S5 Soft-Off, Particular S4/S5 State Cannot be Determined"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x07,  L"Power State At Time Of Request: G3/Mechanical Off"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x08,  L"Power State At Time Of Request: Sleeping In An S1, S2, or S3 States"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x09,  L"Power State At Time Of Request: G1 Sleeping"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x0A,  L"Power State At Time Of Request: S5 Entered By Override"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x0B,  L"Power State At Time Of Request: Legacy ON State"},
{0x00,  0x00,  0x00,  0x00,  0xFF,  0x00,  0x0C,  L"Power State At Time Of Request: Legacy OFF State"},

{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Thermal Trip"},
};

//
// Sensor Type: 0x1B - Cable/Interconnect Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x1B[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cable/Interconnect is connected"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Configuration Error -Incorrect Cable Connected/Incorrect Interconnection"},
};

//
// Sensor Type: 0x1D - System Boot/Restart Initiated Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x1D[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Initiated By Power Up"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Initiated By Hard Reset"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Initiated By Warm Reset"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"User Requested PXE Boot"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Automatic Boot To Diagnostic"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"OS/Run-time Software initiated Hard Reset"},
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"OS/Run-time Software initiated Warm Reset"},

{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"System restart"},
{0x07,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Restart Cause(As per Get System Restart Cause command): "},
{0x07,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  L"Channel number(As per Get System Restart Cause command): "},
};

//
// Sensor Type: 0x1E - Boot Error Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x1E[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"No Bootable Media"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Non-Bootable Diskette Left In Drive"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"PXE Server Not Found"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Invalid Boot Sector"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Timeout Waiting for User Selection of Boot Source"},
};

//
// Sensor Type: 0x1F - OS Boot Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x1F[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"A: Boot Completed"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"C: Boot Completed"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"PXE Boot Completed"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Diagnostic Boot Completed"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"CD-ROM Boot Completed"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"ROM Boot Completed"},
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Boot Completed (Device Not Specified)"},
};

//
// Sensor Type: 0x20 - OS Stop/ShutDown Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x20[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Critical Stop During OS Load/Initialization"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Run-Time Critical Stop"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"OS Graceful Stop"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"OS Graceful Shutdown"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Soft Shutdown Initiated by PEF"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Agent Not responding"},
};

//
// Sensor Type: 0x21 - Slot Connector Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x21[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Fault Status Asserted"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Identity Status Asserted"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Slot/Connector Device Installed/Attached"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Slot/Connector Ready for Device Installation"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Slot/Connector Ready for Device Removal"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Slot Power is Off"},
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Slot/Connector Device Removal Request"},
{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Interlock Asserted"},
{0x08,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Slot is Disabled"},

{0x09,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Slot Holds Spare Device"},
{0x09,  0x7F,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Slot/Connector Type: PCI"},
{0x09,  0x7F,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Slot/Connector Type: Drive Array"},
{0x09,  0x7F,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Slot/Connector Type: External Peripheral Connector"},
{0x09,  0x7F,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Slot/Connector Type: Docking"},
{0x09,  0x7F,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Slot/Connector Type: Other Standard Internal Expansion Slot"},
{0x09,  0x7F,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Slot/Connector Type: Slot Associated with Entity Specified by Entity ID for Sensor"},
{0x09,  0x7F,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Slot/Connector Type: AdvancedTCA"},
{0x09,  0x7F,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Slot/Connector Type: DIMM/Memory Devices"},
{0x09,  0x7F,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Slot/Connector Type: Fan"},
{0x09,  0x7F,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Slot/Connector Type: PCI Express"},
{0x09,  0x7F,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Slot/Connector Type: SCSI (Parallel)"},
{0x09,  0x7F,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Slot/Connector Type: SATA/SAS"},
{0x09,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  L"Slot Connector Number: "},
};

//
// Sensor Type: 0x22 - System ACPI Power State Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x22[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"S0/G0 Working"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"S1 Sleeping With System H/W & Processor Context Maintained"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"S2 Sleeping, Processor Context Lost"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"S3 Sleeping, Processor & H/W Context Lost, Memory Retained"},
{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"S4 Non-Volatile Sleep/Suspend-to Disk"},
{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"S5/G2 Soft-Off"},
{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"S4/S5 Soft-Off, Particular S4/S5 State Cannot be Determined"},
{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"G3/Mechanical Off"},
{0x08,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Sleeping In An S1, S2, or S3 States"},
{0x09,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"G1 Sleeping"},
{0x0A,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"S5 Entered By Override"},
{0x0B,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Legacy ON State"},
{0x0C,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Legacy OFF State"},
{0x0E,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Unknown"},
};

//
// Sensor Type: 0x23 - Watchdog 2 Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x23[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Timer Expired"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Hard Reset"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Down"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Power Cycle"},

{0x08,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Timer Interrupt"},
{0x08,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Interrupt Type: None"},
{0x08,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Interrupt Type: SMI"},
{0x08,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Interrupt Type: NMI"},
{0x08,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Interrupt Type: Messaging Interrupt"},
{0x08,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Interrupt Type: Unspecified"},
{0x08,  0x0F,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Timer Use At Expiration: BIOS FRB2"},
{0x08,  0x0F,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Timer Use At Expiration: BIOS POST"},
{0x08,  0x0F,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Timer Use At Expiration: OS Load"},
{0x08,  0x0F,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Timer Use At Expiration: SMS/OS"},
{0x08,  0x0F,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Timer Use At Expiration: OEM"},
{0x08,  0x0F,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Timer Use At Expiration: Unspecified"},
};

//
// Sensor Type: 0x24 - Platform Alert Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x24[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Platform Generated Page"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Platform Generated LAN Alert"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Platform Event Trap Generated"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Platform Generated SNMP Trap"},
};

//
// Sensor Type: 0x25 - Entity Presence Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x25[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Entity Present"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Entity Absent"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Entity Disabled"},
};

//
// Sensor Type: 0x27 - LAN Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x27[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"LAN Heartbeat Lost"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"LAN Heartbeat"},
};

//
// Sensor Type: 0x28 - Management Subsystem Health Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x28[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Sensor Access Degraded or Unavailable"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Controller Access Degraded or Unavailable"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Management Controller Off-Line"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Management Controller Unavailable"},

{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Sensor Failure"},
{0x04,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"Failed Sensor Number: "},

{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Failure"},
{0x05,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Device is not a Logical FRU device"},
{0x05,  0x80,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Device is a Logical FRU device"},
{0x05,  0x18,  0xFF,  0xFF,  0x00,  0x00,  0x00,  L"LUN for Master Write-Read Command/FRU Command: "},
{0x05,  0x18,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Device is non-intelligent device directly on IPMB"},

{0x05,  0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Device directly on IPMB, or device is a logical FRU Device"},
{0x05,  0x07,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Private BUS ID: 0x01"},
{0x05,  0x07,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Private BUS ID: 0x02"},
{0x05,  0x07,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Private BUS ID: 0x03"},
{0x05,  0x07,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Private BUS ID: 0x04"},
{0x05,  0x07,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Private BUS ID: 0x05"},
{0x05,  0x07,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Private BUS ID: 0x06"},
{0x05,  0x07,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Private BUS ID: 0x07"},
//Based on ED2, the data interpretation for ED3 differs. So print the value as is.
{0x05,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  L"Event Data 3: "},
};

//
// Sensor Type: 0x29 - Battery Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x29[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Battery Low"},
{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Battery Failed"},
{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Battery Presence Detected"},
};

//
// Sensor Type: 0x2A - Session Audit Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x2A[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Session Activated"},

{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Session Deactivated"},
{0x01,  0x3F,  0x3F,  0x3F,  0x00,  0x00,  0x00,  L"User ID for user that activated session: "},
{0x01,  0x00,  0x00,  0x00,  0x30,  0x00,  0x00,  L"Session Deactivation Cause Unspecified"},
{0x01,  0x00,  0x00,  0x00,  0x30,  0x00,  0x10,  L"Session Deactivated by Close Session Command"},
{0x01,  0x00,  0x00,  0x00,  0x30,  0x00,  0x20,  L"Session Deactivated by Timeout"},
{0x01,  0x00,  0x00,  0x00,  0x30,  0x00,  0x30,  L"Session Deactivated by Configuration Change"},
{0x01,  0x00,  0x00,  0x00,  0x0F,  0x0F,  0x0F,  L"Channel Number Session activated/deactivated: "},

{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Invalid Username or Password"},
{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Invalid Password Disable"},

};

//
// Sensor Type: 0x2B - Version Change Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x2B[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Hardware Change Detected with Associated Entity"},
{0x00,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Version change type: Unspecified"},
{0x00,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device ID"},
{0x00,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Firmware Revision"},
{0x00,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device Revision"},
{0x00,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Manufacturer ID"},
{0x00,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Version change type: Management Controller IPMI Version"},
{0x00,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Auxiliary Firmware ID"},
{0x00,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Version change type: Management Controller FirmWare Boot Block"},
{0x00,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Version change type: Other Management Controller Firmware"},
{0x00,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Version change type: System Firmware (EFI/BIOS) Change"},
{0x00,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Version change type: SMBIOS Change"},
{0x00,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Version change type: OS Change"},
{0x00,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Version change type: OS Loader Change"},
{0x00,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Version change type: Service or Diagnostic Partition Change"},
{0x00,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Version change type: Management Software Agent Change"},
{0x00,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Version change type: Management Software Application Change"},
{0x00,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Version change type: Management Software Middleware Change"},
{0x00,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Version change type: Programmable Hardware Change"},
{0x00,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Module Change"},
{0x00,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Component Change"},
{0x00,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Equivalent Version"},
{0x00,  0xFF,  0x00,  0x15,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Newer Version"},
{0x00,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Older Version"},
{0x00,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Hardware Configuration Change"},

{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Firmware or Software Change Detected with Associated Entity"},
{0x01,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Version change type: Unspecified"},
{0x01,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device ID"},
{0x01,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Firmware Revision"},
{0x01,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device Revision"},
{0x01,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Manufacturer ID"},
{0x01,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Version change type: Management Controller IPMI Version"},
{0x01,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Auxiliary Firmware ID"},
{0x01,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Version change type: Management Controller FirmWare Boot Block"},
{0x01,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Version change type: Other Management Controller Firmware"},
{0x01,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Version change type: System Firmware (EFI/BIOS) Change"},
{0x01,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Version change type: SMBIOS Change"},
{0x01,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Version change type: OS Change"},
{0x01,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Version change type: OS Loader Change"},
{0x01,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Version change type: Service or Diagnostic Partition Change"},
{0x01,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Version change type: Management Software Agent Change"},
{0x01,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Version change type: Management Software Application Change"},
{0x01,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Version change type: Management Software Middleware Change"},
{0x01,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Version change type: Programmable Hardware Change"},
{0x01,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Module Change"},
{0x01,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Component Change"},
{0x01,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Equivalent Version"},
{0x01,  0xFF,  0x00,  0x15,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Newer Version"},
{0x01,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Older Version"},
{0x01,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Hardware Configuration Change"},

{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Hardware Incompatibility Detected With Associated Entity"},
{0x02,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Version change type: Unspecified"},
{0x02,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device ID"},
{0x02,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Firmware Revision"},
{0x02,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device Revision"},
{0x02,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Manufacturer ID"},
{0x02,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Version change type: Management Controller IPMI Version"},
{0x02,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Auxiliary Firmware ID"},
{0x02,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Version change type: Management Controller FirmWare Boot Block"},
{0x02,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Version change type: Other Management Controller Firmware"},
{0x02,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Version change type: System Firmware (EFI/BIOS) Change"},
{0x02,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Version change type: SMBIOS Change"},
{0x02,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Version change type: OS Change"},
{0x02,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Version change type: OS Loader Change"},
{0x02,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Version change type: Service or Diagnostic Partition Change"},
{0x02,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Version change type: Management Software Agent Change"},
{0x02,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Version change type: Management Software Application Change"},
{0x02,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Version change type: Management Software Middleware Change"},
{0x02,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Version change type: Programmable Hardware Change"},
{0x02,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Module Change"},
{0x02,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Component Change"},
{0x02,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Equivalent Version"},
{0x02,  0xFF,  0x00,  0x15,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Newer Version"},
{0x02,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Older Version"},
{0x02,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Hardware Configuration Change"},

{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Firmware or Software Incompatibility detected with Associated Entity"},
{0x03,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Version change type: Unspecified"},
{0x03,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device ID"},
{0x03,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Firmware Revision"},
{0x03,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device Revision"},
{0x03,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Manufacturer ID"},
{0x03,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Version change type: Management Controller IPMI Version"},
{0x03,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Auxiliary Firmware ID"},
{0x03,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Version change type: Management Controller FirmWare Boot Block"},
{0x03,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Version change type: Other Management Controller Firmware"},
{0x03,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Version change type: System Firmware (EFI/BIOS) Change"},
{0x03,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Version change type: SMBIOS Change"},
{0x03,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Version change type: OS Change"},
{0x03,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Version change type: OS Loader Change"},
{0x03,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Version change type: Service or Diagnostic Partition Change"},
{0x03,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Version change type: Management Software Agent Change"},
{0x03,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Version change type: Management Software Application Change"},
{0x03,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Version change type: Management Software Middleware Change"},
{0x03,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Version change type: Programmable Hardware Change"},
{0x03,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Module Change"},
{0x03,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Component Change"},
{0x03,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Equivalent Version"},
{0x03,  0xFF,  0x00,  0x15,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Newer Version"},
{0x03,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Older Version"},
{0x03,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Hardware Configuration Change"},

{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Entity is of an Invalid or Unsupported Firmware or Software Version"},
{0x04,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Version change type: Unspecified"},
{0x04,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device ID"},
{0x04,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Firmware Revision"},
{0x04,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device Revision"},
{0x04,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Manufacturer ID"},
{0x04,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Version change type: Management Controller IPMI Version"},
{0x04,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Auxiliary Firmware ID"},
{0x04,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Version change type: Management Controller FirmWare Boot Block"},
{0x04,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Version change type: Other Management Controller Firmware"},
{0x04,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Version change type: System Firmware (EFI/BIOS) Change"},
{0x04,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Version change type: SMBIOS Change"},
{0x04,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Version change type: OS Change"},
{0x04,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Version change type: OS Loader Change"},
{0x04,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Version change type: Service or Diagnostic Partition Change"},
{0x04,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Version change type: Management Software Agent Change"},
{0x04,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Version change type: Management Software Application Change"},
{0x04,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Version change type: Management Software Middleware Change"},
{0x04,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Version change type: Programmable Hardware Change"},
{0x04,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Module Change"},
{0x04,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Component Change"},
{0x04,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Equivalent Version"},
{0x04,  0xFF,  0x00,  0x15,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Newer Version"},
{0x04,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Older Version"},
{0x04,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Hardware Configuration Change"},

{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Entity Contains an Invalid or Unsupported Firmware or Software Version"},
{0x05,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Version change type: Unspecified"},
{0x05,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device ID"},
{0x05,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Firmware Revision"},
{0x05,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device Revision"},
{0x05,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Manufacturer ID"},
{0x05,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Version change type: Management Controller IPMI Version"},
{0x05,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Auxiliary Firmware ID"},
{0x05,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Version change type: Management Controller FirmWare Boot Block"},
{0x05,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Version change type: Other Management Controller Firmware"},
{0x05,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Version change type: System Firmware (EFI/BIOS) Change"},
{0x05,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Version change type: SMBIOS Change"},
{0x05,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Version change type: OS Change"},
{0x05,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Version change type: OS Loader Change"},
{0x05,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Version change type: Service or Diagnostic Partition Change"},
{0x05,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Version change type: Management Software Agent Change"},
{0x05,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Version change type: Management Software Application Change"},
{0x05,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Version change type: Management Software Middleware Change"},
{0x05,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Version change type: Programmable Hardware Change"},
{0x05,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Module Change"},
{0x05,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Component Change"},
{0x05,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Equivalent Version"},
{0x05,  0xFF,  0x00,  0x15,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Newer Version"},
{0x05,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Older Version"},
{0x05,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Hardware Configuration Change"},

{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Hardware Change Detected with Associated Entity was Successful"},
{0x06,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Version change type: Unspecified"},
{0x06,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device ID"},
{0x06,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Firmware Revision"},
{0x06,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device Revision"},
{0x06,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Manufacturer ID"},
{0x06,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Version change type: Management Controller IPMI Version"},
{0x06,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Auxiliary Firmware ID"},
{0x06,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Version change type: Management Controller FirmWare Boot Block"},
{0x06,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Version change type: Other Management Controller Firmware"},
{0x06,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Version change type: System Firmware (EFI/BIOS) Change"},
{0x06,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Version change type: SMBIOS Change"},
{0x06,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Version change type: OS Change"},
{0x06,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Version change type: OS Loader Change"},
{0x06,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Version change type: Service or Diagnostic Partition Change"},
{0x06,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Version change type: Management Software Agent Change"},
{0x06,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Version change type: Management Software Application Change"},
{0x06,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Version change type: Management Software Middleware Change"},
{0x06,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Version change type: Programmable Hardware Change"},
{0x06,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Module Change"},
{0x06,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Component Change"},
{0x06,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Equivalent Version"},
{0x06,  0xFF,  0x00,  0x15,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Newer Version"},
{0x06,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Older Version"},
{0x06,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Hardware Configuration Change"},

{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Software or Firmware Change Detected with Associated Entity was Successful"},
{0x07,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Version change type: Unspecified"},
{0x07,  0xFF,  0x00,  0x01,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device ID"},
{0x07,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Firmware Revision"},
{0x07,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Device Revision"},
{0x07,  0xFF,  0x00,  0x04,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Manufacturer ID"},
{0x07,  0xFF,  0x00,  0x05,  0x00,  0x00,  0x00,  L"Version change type: Management Controller IPMI Version"},
{0x07,  0xFF,  0x00,  0x06,  0x00,  0x00,  0x00,  L"Version change type: Management Controller Auxiliary Firmware ID"},
{0x07,  0xFF,  0x00,  0x07,  0x00,  0x00,  0x00,  L"Version change type: Management Controller FirmWare Boot Block"},
{0x07,  0xFF,  0x00,  0x08,  0x00,  0x00,  0x00,  L"Version change type: Other Management Controller Firmware"},
{0x07,  0xFF,  0x00,  0x09,  0x00,  0x00,  0x00,  L"Version change type: System Firmware (EFI/BIOS) Change"},
{0x07,  0xFF,  0x00,  0x0A,  0x00,  0x00,  0x00,  L"Version change type: SMBIOS Change"},
{0x07,  0xFF,  0x00,  0x0B,  0x00,  0x00,  0x00,  L"Version change type: OS Change"},
{0x07,  0xFF,  0x00,  0x0C,  0x00,  0x00,  0x00,  L"Version change type: OS Loader Change"},
{0x07,  0xFF,  0x00,  0x0D,  0x00,  0x00,  0x00,  L"Version change type: Service or Diagnostic Partition Change"},
{0x07,  0xFF,  0x00,  0x0E,  0x00,  0x00,  0x00,  L"Version change type: Management Software Agent Change"},
{0x07,  0xFF,  0x00,  0x0F,  0x00,  0x00,  0x00,  L"Version change type: Management Software Application Change"},
{0x07,  0xFF,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Version change type: Management Software Middleware Change"},
{0x07,  0xFF,  0x00,  0x11,  0x00,  0x00,  0x00,  L"Version change type: Programmable Hardware Change"},
{0x07,  0xFF,  0x00,  0x12,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Module Change"},
{0x07,  0xFF,  0x00,  0x13,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Component Change"},
{0x07,  0xFF,  0x00,  0x14,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Equivalent Version"},
{0x07,  0xFF,  0x00,  0x15,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Newer Version"},
{0x07,  0xFF,  0x00,  0x16,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Replaced with Older Version"},
{0x07,  0xFF,  0x00,  0x17,  0x00,  0x00,  0x00,  L"Version change type: Board/FRU Hardware Configuration Change"},

};

//
// Sensor Type: 0x2C - FRU State Sensor Type
//
static SENSOR_OFFSET_STRING_TABLE  gSensorOffsetStringTable0x2C[] =
{
{0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Not Installed"},
{0x00,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cause of State Change: Normal State Change"},
{0x00,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Cause of State Change: Change Commanded By Software External To FRU"},
{0x00,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Changing a Handle Latch"},
{0x00,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Pressing the Hot Swap Button"},
{0x00,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To FRU Programmatic Action"},
{0x00,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost"},
{0x00,  0xF0,  0x00,  0x60,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost Due to Local Failure"},
{0x00,  0xF0,  0x00,  0x70,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Unexpected Extraction"},
{0x00,  0xF0,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Operator Intervention/Update"},
{0x00,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"Cause of State Change: Unable To Compute IPMB Address"},
{0x00,  0xF0,  0x00,  0xA0,  0x00,  0x00,  0x00,  L"Cause of State Change: Unexpected Deactivation"},
{0x00,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Cause of State Change: Cause Unknown"},
{0x00,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Previous State Offset Value: "},

{0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Inactive"},
{0x01,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cause of State Change: Normal State Change"},
{0x01,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Cause of State Change: Change Commanded By Software External To FRU"},
{0x01,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Changing a Handle Latch"},
{0x01,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Pressing the Hot Swap Button"},
{0x01,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To FRU Programmatic Action"},
{0x01,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost"},
{0x01,  0xF0,  0x00,  0x60,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost Due to Local Failure"},
{0x01,  0xF0,  0x00,  0x70,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Unexpected Extraction"},
{0x01,  0xF0,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Operator Intervention/Update"},
{0x01,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"Cause of State Change: Unable To Compute IPMB Address"},
{0x01,  0xF0,  0x00,  0xA0,  0x00,  0x00,  0x00,  L"Cause of State Change: Unexpected Deactivation"},
{0x01,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Cause of State Change: Cause Unknown"},
{0x01,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Previous State Offset Value: "},

{0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Activation Requested"},
{0x02,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cause of State Change: Normal State Change"},
{0x02,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Cause of State Change: Change Commanded By Software External To FRU"},
{0x02,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Changing a Handle Latch"},
{0x02,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Pressing the Hot Swap Button"},
{0x02,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To FRU Programmatic Action"},
{0x02,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost"},
{0x02,  0xF0,  0x00,  0x60,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost Due to Local Failure"},
{0x02,  0xF0,  0x00,  0x70,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Unexpected Extraction"},
{0x02,  0xF0,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Operator Intervention/Update"},
{0x02,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"Cause of State Change: Unable To Compute IPMB Address"},
{0x02,  0xF0,  0x00,  0xA0,  0x00,  0x00,  0x00,  L"Cause of State Change: Unexpected Deactivation"},
{0x02,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Cause of State Change: Cause Unknown"},
{0x02,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Previous State Offset Value: "},

{0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Activation In Progress"},
{0x03,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cause of State Change: Normal State Change"},
{0x03,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Cause of State Change: Change Commanded By Software External To FRU"},
{0x03,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Changing a Handle Latch"},
{0x03,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Pressing the Hot Swap Button"},
{0x03,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To FRU Programmatic Action"},
{0x03,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost"},
{0x03,  0xF0,  0x00,  0x60,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost Due to Local Failure"},
{0x03,  0xF0,  0x00,  0x70,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Unexpected Extraction"},
{0x03,  0xF0,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Operator Intervention/Update"},
{0x03,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"Cause of State Change: Unable To Compute IPMB Address"},
{0x03,  0xF0,  0x00,  0xA0,  0x00,  0x00,  0x00,  L"Cause of State Change: Unexpected Deactivation"},
{0x03,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Cause of State Change: Cause Unknown"},
{0x03,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Previous State Offset Value: "},

{0x04,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Active"},
{0x04,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cause of State Change: Normal State Change"},
{0x04,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Cause of State Change: Change Commanded By Software External To FRU"},
{0x04,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Changing a Handle Latch"},
{0x04,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Pressing the Hot Swap Button"},
{0x04,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To FRU Programmatic Action"},
{0x04,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost"},
{0x04,  0xF0,  0x00,  0x60,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost Due to Local Failure"},
{0x04,  0xF0,  0x00,  0x70,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Unexpected Extraction"},
{0x04,  0xF0,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Operator Intervention/Update"},
{0x04,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"Cause of State Change: Unable To Compute IPMB Address"},
{0x04,  0xF0,  0x00,  0xA0,  0x00,  0x00,  0x00,  L"Cause of State Change: Unexpected Deactivation"},
{0x04,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Cause of State Change: Cause Unknown"},
{0x04,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Previous State Offset Value: "},

{0x05,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Deactivation Requested"},
{0x05,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cause of State Change: Normal State Change"},
{0x05,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Cause of State Change: Change Commanded By Software External To FRU"},
{0x05,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Changing a Handle Latch"},
{0x05,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Pressing the Hot Swap Button"},
{0x05,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To FRU Programmatic Action"},
{0x05,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost"},
{0x05,  0xF0,  0x00,  0x60,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost Due to Local Failure"},
{0x05,  0xF0,  0x00,  0x70,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Unexpected Extraction"},
{0x05,  0xF0,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Operator Intervention/Update"},
{0x05,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"Cause of State Change: Unable To Compute IPMB Address"},
{0x05,  0xF0,  0x00,  0xA0,  0x00,  0x00,  0x00,  L"Cause of State Change: Unexpected Deactivation"},
{0x05,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Cause of State Change: Cause Unknown"},
{0x05,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Previous State Offset Value: "},

{0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Deactivation In Progress"},
{0x06,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cause of State Change: Normal State Change"},
{0x06,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Cause of State Change: Change Commanded By Software External To FRU"},
{0x06,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Changing a Handle Latch"},
{0x06,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Pressing the Hot Swap Button"},
{0x06,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To FRU Programmatic Action"},
{0x06,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost"},
{0x06,  0xF0,  0x00,  0x60,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost Due to Local Failure"},
{0x06,  0xF0,  0x00,  0x70,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Unexpected Extraction"},
{0x06,  0xF0,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Operator Intervention/Update"},
{0x06,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"Cause of State Change: Unable To Compute IPMB Address"},
{0x06,  0xF0,  0x00,  0xA0,  0x00,  0x00,  0x00,  L"Cause of State Change: Unexpected Deactivation"},
{0x06,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Cause of State Change: Cause Unknown"},
{0x06,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Previous State Offset Value: "},

{0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  L"FRU Communication Lost"},
{0x07,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  L"Cause of State Change: Normal State Change"},
{0x07,  0xF0,  0x00,  0x10,  0x00,  0x00,  0x00,  L"Cause of State Change: Change Commanded By Software External To FRU"},
{0x07,  0xF0,  0x00,  0x20,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Changing a Handle Latch"},
{0x07,  0xF0,  0x00,  0x30,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To Operator Pressing the Hot Swap Button"},
{0x07,  0xF0,  0x00,  0x40,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due To FRU Programmatic Action"},
{0x07,  0xF0,  0x00,  0x50,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost"},
{0x07,  0xF0,  0x00,  0x60,  0x00,  0x00,  0x00,  L"Cause of State Change: Communication Lost Due to Local Failure"},
{0x07,  0xF0,  0x00,  0x70,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Unexpected Extraction"},
{0x07,  0xF0,  0x00,  0x80,  0x00,  0x00,  0x00,  L"Cause of State Change: State Change Due to Operator Intervention/Update"},
{0x07,  0xF0,  0x00,  0x90,  0x00,  0x00,  0x00,  L"Cause of State Change: Unable To Compute IPMB Address"},
{0x07,  0xF0,  0x00,  0xA0,  0x00,  0x00,  0x00,  L"Cause of State Change: Unexpected Deactivation"},
{0x07,  0xF0,  0x00,  0xF0,  0x00,  0x00,  0x00,  L"Cause of State Change: Cause Unknown"},
{0x07,  0x0F,  0x0F,  0x0F,  0x00,  0x00,  0x00,  L"Previous State Offset Value: "}
};

//
// Sensor Offset string count in Look up table
//
#define SENSOR_OFFSET_STRING_TABLE_SIZE(Table) ( sizeof(Table)/sizeof(SENSOR_OFFSET_STRING_TABLE) )

//
// Sensor Type value to Description string Look up table
//
/*
SENSOR, SIZE OF TABLE,                                                POINTER TO TABLE
Type  
*/
static SENSOR_TYPE_VALUE_TO_DESC_STRING  gSensorTypeValueToDescStringTable[] =
{
{0x05, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x05), gSensorOffsetStringTable0x05},
{0x06, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x06), gSensorOffsetStringTable0x06},
{0x07, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x07), gSensorOffsetStringTable0x07},
{0x08, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x08), gSensorOffsetStringTable0x08},
{0x09, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x09), gSensorOffsetStringTable0x09},
{0x0C, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x0C), gSensorOffsetStringTable0x0C},
{0x0D, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x0D), gSensorOffsetStringTable0x0D},
{0x0F, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x0F), gSensorOffsetStringTable0x0F},

{0x10, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x10), gSensorOffsetStringTable0x10},
{0x12, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x12), gSensorOffsetStringTable0x12},
{0x13, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x13), gSensorOffsetStringTable0x13},
{0x14, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x14), gSensorOffsetStringTable0x14},
{0x19, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x19), gSensorOffsetStringTable0x19},
{0x1B, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x1B), gSensorOffsetStringTable0x1B},
{0x1D, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x1D), gSensorOffsetStringTable0x1D},
{0x1E, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x1E), gSensorOffsetStringTable0x1E},
{0x1F, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x1F), gSensorOffsetStringTable0x1F},

{0x20, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x20), gSensorOffsetStringTable0x20},
{0x21, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x21), gSensorOffsetStringTable0x21},
{0x22, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x22), gSensorOffsetStringTable0x22},
{0x23, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x23), gSensorOffsetStringTable0x23},
{0x24, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x24), gSensorOffsetStringTable0x24},
{0x25, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x25), gSensorOffsetStringTable0x25},
{0x27, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x27), gSensorOffsetStringTable0x27},
{0x28, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x28), gSensorOffsetStringTable0x28},
{0x29, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x29), gSensorOffsetStringTable0x29},
{0x2A, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x2A), gSensorOffsetStringTable0x2A},
{0x2B, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x2B), gSensorOffsetStringTable0x2B},
{0x2C, SENSOR_OFFSET_STRING_TABLE_SIZE(gSensorOffsetStringTable0x2C), gSensorOffsetStringTable0x2C},
};

#define SENSOR_TYPE_VALUE_TO_DESC_STRING_TABLE_COUNT \
    ( sizeof(gSensorTypeValueToDescStringTable) / sizeof(SENSOR_TYPE_VALUE_TO_DESC_STRING) )

#pragma pack()

#endif

//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2014, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**         5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093     **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************
